-
Notifications
You must be signed in to change notification settings - Fork 519
/
Copy pathget_rtaddrs.lc
28 lines (24 loc) · 1.49 KB
/
get_rtaddrs.lc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "unproute.h"## 1 ##src/libroute/get_rtaddrs.c##
/*## 2 ##src/libroute/get_rtaddrs.c##
* Round up 'a' to next multiple of 'size'## 3 ##src/libroute/get_rtaddrs.c##
*/## 4 ##src/libroute/get_rtaddrs.c##
#define ROUNDUP(a, size) (((a) & ((size)-1)) ? (1 + ((a) | ((size)-1))) : (a))## 5 ##src/libroute/get_rtaddrs.c##
/*## 6 ##src/libroute/get_rtaddrs.c##
* Step to next socket address structure;## 7 ##src/libroute/get_rtaddrs.c##
* if sa_len is 0, assume it is sizeof(u_long).## 8 ##src/libroute/get_rtaddrs.c##
*/## 9 ##src/libroute/get_rtaddrs.c##
#define NEXT_SA(ap) ap = (SA *) \## 10 ##src/libroute/get_rtaddrs.c##
((caddr_t) ap + (ap->sa_len ? ROUNDUP(ap->sa_len, sizeof (u_long)) : \## 11 ##src/libroute/get_rtaddrs.c##
sizeof(u_long)))## 12 ##src/libroute/get_rtaddrs.c##
void## 13 ##src/libroute/get_rtaddrs.c##
get_rtaddrs(int addrs, SA *sa, SA **rti_info)## 14 ##src/libroute/get_rtaddrs.c##
{## 15 ##src/libroute/get_rtaddrs.c##
int i;## 16 ##src/libroute/get_rtaddrs.c##
for (i = 0; i < RTAX_MAX; i++) {## 17 ##src/libroute/get_rtaddrs.c##
if (addrs & (1 << i)) {## 18 ##src/libroute/get_rtaddrs.c##
rti_info[i] = sa;## 19 ##src/libroute/get_rtaddrs.c##
NEXT_SA(sa);## 20 ##src/libroute/get_rtaddrs.c##
} else## 21 ##src/libroute/get_rtaddrs.c##
rti_info[i] = NULL;## 22 ##src/libroute/get_rtaddrs.c##
}## 23 ##src/libroute/get_rtaddrs.c##
}## 24 ##src/libroute/get_rtaddrs.c##