| Index: fusl/src/network/proto.c
|
| diff --git a/fusl/src/network/proto.c b/fusl/src/network/proto.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a42d1456e2a6ada5cc131cdb17769f73ba641ef7
|
| --- /dev/null
|
| +++ b/fusl/src/network/proto.c
|
| @@ -0,0 +1,84 @@
|
| +#include <netdb.h>
|
| +#include <string.h>
|
| +
|
| +/* do we really need all these?? */
|
| +
|
| +static int idx;
|
| +static const unsigned char protos[] = {
|
| + "\000ip\0"
|
| + "\001icmp\0"
|
| + "\002igmp\0"
|
| + "\003ggp\0"
|
| + "\004ipencap\0"
|
| + "\005st\0"
|
| + "\006tcp\0"
|
| + "\008egp\0"
|
| + "\014pup\0"
|
| + "\021udp\0"
|
| + "\024hmp\0"
|
| + "\026xns-idp\0"
|
| + "\033rdp\0"
|
| + "\035iso-tp4\0"
|
| + "\044xtp\0"
|
| + "\045ddp\0"
|
| + "\046idpr-cmtp\0"
|
| + "\051ipv6\0"
|
| + "\053ipv6-route\0"
|
| + "\054ipv6-frag\0"
|
| + "\055idrp\0"
|
| + "\056rsvp\0"
|
| + "\057gre\0"
|
| + "\062esp\0"
|
| + "\063ah\0"
|
| + "\071skip\0"
|
| + "\072ipv6-icmp\0"
|
| + "\073ipv6-nonxt\0"
|
| + "\074ipv6-opts\0"
|
| + "\111rspf\0"
|
| + "\121vmtp\0"
|
| + "\131ospf\0"
|
| + "\136ipip\0"
|
| + "\142encap\0"
|
| + "\147pim\0"
|
| + "\377raw"
|
| +};
|
| +
|
| +void endprotoent(void)
|
| +{
|
| + idx = 0;
|
| +}
|
| +
|
| +void setprotoent(int stayopen)
|
| +{
|
| + idx = 0;
|
| +}
|
| +
|
| +struct protoent *getprotoent(void)
|
| +{
|
| + static struct protoent p;
|
| + static const char *aliases;
|
| + 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;
|
| +}
|
| +
|
| +struct protoent *getprotobyname(const char *name)
|
| +{
|
| + struct protoent *p;
|
| + endprotoent();
|
| + do p = getprotoent();
|
| + while (p && strcmp(name, p->p_name));
|
| + return p;
|
| +}
|
| +
|
| +struct protoent *getprotobynumber(int num)
|
| +{
|
| + struct protoent *p;
|
| + endprotoent();
|
| + do p = getprotoent();
|
| + while (p && p->p_proto != num);
|
| + return p;
|
| +}
|
|
|