1*c9945492SAndroid Build Coastguard Worker #include <netdb.h> 2*c9945492SAndroid Build Coastguard Worker #include <string.h> 3*c9945492SAndroid Build Coastguard Worker 4*c9945492SAndroid Build Coastguard Worker /* do we really need all these?? */ 5*c9945492SAndroid Build Coastguard Worker 6*c9945492SAndroid Build Coastguard Worker static int idx; 7*c9945492SAndroid Build Coastguard Worker static const unsigned char protos[] = { 8*c9945492SAndroid Build Coastguard Worker "\000ip\0" 9*c9945492SAndroid Build Coastguard Worker "\001icmp\0" 10*c9945492SAndroid Build Coastguard Worker "\002igmp\0" 11*c9945492SAndroid Build Coastguard Worker "\003ggp\0" 12*c9945492SAndroid Build Coastguard Worker "\004ipencap\0" 13*c9945492SAndroid Build Coastguard Worker "\005st\0" 14*c9945492SAndroid Build Coastguard Worker "\006tcp\0" 15*c9945492SAndroid Build Coastguard Worker "\010egp\0" 16*c9945492SAndroid Build Coastguard Worker "\014pup\0" 17*c9945492SAndroid Build Coastguard Worker "\021udp\0" 18*c9945492SAndroid Build Coastguard Worker "\024hmp\0" 19*c9945492SAndroid Build Coastguard Worker "\026xns-idp\0" 20*c9945492SAndroid Build Coastguard Worker "\033rdp\0" 21*c9945492SAndroid Build Coastguard Worker "\035iso-tp4\0" 22*c9945492SAndroid Build Coastguard Worker "\044xtp\0" 23*c9945492SAndroid Build Coastguard Worker "\045ddp\0" 24*c9945492SAndroid Build Coastguard Worker "\046idpr-cmtp\0" 25*c9945492SAndroid Build Coastguard Worker "\051ipv6\0" 26*c9945492SAndroid Build Coastguard Worker "\053ipv6-route\0" 27*c9945492SAndroid Build Coastguard Worker "\054ipv6-frag\0" 28*c9945492SAndroid Build Coastguard Worker "\055idrp\0" 29*c9945492SAndroid Build Coastguard Worker "\056rsvp\0" 30*c9945492SAndroid Build Coastguard Worker "\057gre\0" 31*c9945492SAndroid Build Coastguard Worker "\062esp\0" 32*c9945492SAndroid Build Coastguard Worker "\063ah\0" 33*c9945492SAndroid Build Coastguard Worker "\071skip\0" 34*c9945492SAndroid Build Coastguard Worker "\072ipv6-icmp\0" 35*c9945492SAndroid Build Coastguard Worker "\073ipv6-nonxt\0" 36*c9945492SAndroid Build Coastguard Worker "\074ipv6-opts\0" 37*c9945492SAndroid Build Coastguard Worker "\111rspf\0" 38*c9945492SAndroid Build Coastguard Worker "\121vmtp\0" 39*c9945492SAndroid Build Coastguard Worker "\131ospf\0" 40*c9945492SAndroid Build Coastguard Worker "\136ipip\0" 41*c9945492SAndroid Build Coastguard Worker "\142encap\0" 42*c9945492SAndroid Build Coastguard Worker "\147pim\0" 43*c9945492SAndroid Build Coastguard Worker "\377raw" 44*c9945492SAndroid Build Coastguard Worker }; 45*c9945492SAndroid Build Coastguard Worker endprotoent(void)46*c9945492SAndroid Build Coastguard Workervoid endprotoent(void) 47*c9945492SAndroid Build Coastguard Worker { 48*c9945492SAndroid Build Coastguard Worker idx = 0; 49*c9945492SAndroid Build Coastguard Worker } 50*c9945492SAndroid Build Coastguard Worker setprotoent(int stayopen)51*c9945492SAndroid Build Coastguard Workervoid setprotoent(int stayopen) 52*c9945492SAndroid Build Coastguard Worker { 53*c9945492SAndroid Build Coastguard Worker idx = 0; 54*c9945492SAndroid Build Coastguard Worker } 55*c9945492SAndroid Build Coastguard Worker getprotoent(void)56*c9945492SAndroid Build Coastguard Workerstruct protoent *getprotoent(void) 57*c9945492SAndroid Build Coastguard Worker { 58*c9945492SAndroid Build Coastguard Worker static struct protoent p; 59*c9945492SAndroid Build Coastguard Worker static const char *aliases; 60*c9945492SAndroid Build Coastguard Worker if (idx >= sizeof protos) return NULL; 61*c9945492SAndroid Build Coastguard Worker p.p_proto = protos[idx]; 62*c9945492SAndroid Build Coastguard Worker p.p_name = (char *)&protos[idx+1]; 63*c9945492SAndroid Build Coastguard Worker p.p_aliases = (char **)&aliases; 64*c9945492SAndroid Build Coastguard Worker idx += strlen(p.p_name) + 2; 65*c9945492SAndroid Build Coastguard Worker return &p; 66*c9945492SAndroid Build Coastguard Worker } 67*c9945492SAndroid Build Coastguard Worker getprotobyname(const char * name)68*c9945492SAndroid Build Coastguard Workerstruct protoent *getprotobyname(const char *name) 69*c9945492SAndroid Build Coastguard Worker { 70*c9945492SAndroid Build Coastguard Worker struct protoent *p; 71*c9945492SAndroid Build Coastguard Worker endprotoent(); 72*c9945492SAndroid Build Coastguard Worker do p = getprotoent(); 73*c9945492SAndroid Build Coastguard Worker while (p && strcmp(name, p->p_name)); 74*c9945492SAndroid Build Coastguard Worker return p; 75*c9945492SAndroid Build Coastguard Worker } 76*c9945492SAndroid Build Coastguard Worker getprotobynumber(int num)77*c9945492SAndroid Build Coastguard Workerstruct protoent *getprotobynumber(int num) 78*c9945492SAndroid Build Coastguard Worker { 79*c9945492SAndroid Build Coastguard Worker struct protoent *p; 80*c9945492SAndroid Build Coastguard Worker endprotoent(); 81*c9945492SAndroid Build Coastguard Worker do p = getprotoent(); 82*c9945492SAndroid Build Coastguard Worker while (p && p->p_proto != num); 83*c9945492SAndroid Build Coastguard Worker return p; 84*c9945492SAndroid Build Coastguard Worker } 85