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