1*219b2ee8SDavid du Colombier /* posix */ 2*219b2ee8SDavid du Colombier #include <sys/types.h> 3*219b2ee8SDavid du Colombier #include <unistd.h> 4*219b2ee8SDavid du Colombier #include <ctype.h> 5*219b2ee8SDavid du Colombier 6*219b2ee8SDavid du Colombier /* bsd extensions */ 7*219b2ee8SDavid du Colombier #include <sys/uio.h> 8*219b2ee8SDavid du Colombier #include <sys/socket.h> 9*219b2ee8SDavid du Colombier #include <netinet/in.h> 10*219b2ee8SDavid du Colombier 11*219b2ee8SDavid du Colombier #include "priv.h" 12*219b2ee8SDavid du Colombier 13*219b2ee8SDavid du Colombier /* 14*219b2ee8SDavid du Colombier * return ndb attribute type of an ip name 15*219b2ee8SDavid du Colombier */ 16*219b2ee8SDavid du Colombier int 17*219b2ee8SDavid du Colombier _sock_ipattr(char *name) 18*219b2ee8SDavid du Colombier { 19*219b2ee8SDavid du Colombier char *p; 20*219b2ee8SDavid du Colombier int dot = 0; 21*219b2ee8SDavid du Colombier int alpha = 0; 22*219b2ee8SDavid du Colombier 23*219b2ee8SDavid du Colombier for(p = name; *p; p++){ 24*219b2ee8SDavid du Colombier if(isdigit(*p)) 25*219b2ee8SDavid du Colombier ; 26*219b2ee8SDavid du Colombier else if(isalpha(*p) || *p == '-') 27*219b2ee8SDavid du Colombier alpha = 1; 28*219b2ee8SDavid du Colombier else if(*p == '.') 29*219b2ee8SDavid du Colombier dot = 1; 30*219b2ee8SDavid du Colombier else 31*219b2ee8SDavid du Colombier return Tsys; 32*219b2ee8SDavid du Colombier } 33*219b2ee8SDavid du Colombier 34*219b2ee8SDavid du Colombier if(alpha){ 35*219b2ee8SDavid du Colombier if(dot) 36*219b2ee8SDavid du Colombier return Tdom; 37*219b2ee8SDavid du Colombier else 38*219b2ee8SDavid du Colombier return Tsys; 39*219b2ee8SDavid du Colombier } 40*219b2ee8SDavid du Colombier 41*219b2ee8SDavid du Colombier if(dot) 42*219b2ee8SDavid du Colombier return Tip; 43*219b2ee8SDavid du Colombier else 44*219b2ee8SDavid du Colombier return Tsys; 45*219b2ee8SDavid du Colombier } 46