|
|
|
@ -4,25 +4,28 @@ |
|
|
|
/* do we really need all these?? */ |
|
|
|
|
|
|
|
static int idx; |
|
|
|
static const unsigned char protos[][8] = { |
|
|
|
"\000ip", |
|
|
|
"\001icmp", |
|
|
|
"\002igmp", |
|
|
|
"\003ggp", |
|
|
|
"\006tcp", |
|
|
|
"\014pup", |
|
|
|
"\021udp", |
|
|
|
"\026idp", |
|
|
|
"\051ipv6", |
|
|
|
"\057gre", |
|
|
|
"\062esp", |
|
|
|
"\063ah", |
|
|
|
"\072icmpv6", |
|
|
|
"\131ospf", |
|
|
|
"\136ipip", |
|
|
|
"\147pim", |
|
|
|
"\377raw", |
|
|
|
"\0\0" |
|
|
|
static const unsigned char protos[] = { |
|
|
|
"\000ip\0" |
|
|
|
"\001icmp\0" |
|
|
|
"\002igmp\0" |
|
|
|
"\003ggp\0" |
|
|
|
"\006tcp\0" |
|
|
|
"\014pup\0" |
|
|
|
"\021udp\0" |
|
|
|
"\026idp\0" |
|
|
|
"\051ipv6\0" |
|
|
|
"\053ipv6-route\0" |
|
|
|
"\054ipv6-frag\0" |
|
|
|
"\057gre\0" |
|
|
|
"\062esp\0" |
|
|
|
"\063ah\0" |
|
|
|
"\072ipv6-icmp\0" |
|
|
|
"\073ipv6-nonxt\0" |
|
|
|
"\074ipv6-opts\0" |
|
|
|
"\131ospf\0" |
|
|
|
"\136ipip\0" |
|
|
|
"\147pim\0" |
|
|
|
"\377raw" |
|
|
|
}; |
|
|
|
|
|
|
|
void endprotoent(void) |
|
|
|
@ -39,10 +42,11 @@ struct protoent *getprotoent(void) |
|
|
|
{ |
|
|
|
static struct protoent p; |
|
|
|
static const char *aliases; |
|
|
|
if (!protos[idx][1]) return NULL; |
|
|
|
p.p_proto = protos[idx][0]; |
|
|
|
p.p_name = (char *)protos[idx++]+1; |
|
|
|
if (idx >= sizeof protos) return NULL; |
|
|
|
p.p_proto = protos[idx]; |
|
|
|
p.p_name = (char *)&protos[idx+1]; |
|
|
|
p.p_aliases = (char **)&aliases; |
|
|
|
idx += strlen(p.p_name) + 2; |
|
|
|
return &p; |
|
|
|
} |
|
|
|
|
|
|
|
|