xref: /aosp_15_r20/external/musl/src/network/proto.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
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 Worker void 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 Worker void 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 Worker struct 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 Worker struct 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 Worker struct 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