MCPcopy Create free account
hub / github.com/F-Stack/f-stack / plist

Function plist

tools/ndp/ndp.c:1211–1329  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1209}
1210
1211static void
1212plist()
1213{
1214 int mib[] = { CTL_NET, PF_INET6, IPPROTO_ICMPV6, ICMPV6CTL_ND6_PRLIST };
1215 char *buf;
1216 struct in6_prefix *p, *ep, *n;
1217 struct sockaddr_in6 *advrtr;
1218 size_t l;
1219 struct timeval now;
1220 const int niflags = NI_NUMERICHOST;
1221 int ninflags = nflag ? NI_NUMERICHOST : 0;
1222 char namebuf[NI_MAXHOST];
1223
1224 if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), NULL, &l, NULL, 0) < 0) {
1225 err(1, "sysctl(ICMPV6CTL_ND6_PRLIST)");
1226 /*NOTREACHED*/
1227 }
1228 buf = malloc(l);
1229 if (!buf) {
1230 err(1, "malloc");
1231 /*NOTREACHED*/
1232 }
1233 if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), buf, &l, NULL, 0) < 0) {
1234 err(1, "sysctl(ICMPV6CTL_ND6_PRLIST)");
1235 /*NOTREACHED*/
1236 }
1237
1238 ep = (struct in6_prefix *)(buf + l);
1239 for (p = (struct in6_prefix *)buf; p < ep; p = n) {
1240 advrtr = (struct sockaddr_in6 *)(p + 1);
1241 n = (struct in6_prefix *)&advrtr[p->advrtrs];
1242#ifndef FSTACK
1243 if (getnameinfo((struct sockaddr *)&p->prefix,
1244 p->prefix.sin6_len, namebuf, sizeof(namebuf),
1245 NULL, 0, niflags) != 0)
1246#else
1247 inet_ntop(AF_INET6_LINUX, &p->prefix.sin6_addr, namebuf, sizeof(namebuf));
1248#endif
1249 strlcpy(namebuf, "?", sizeof(namebuf));
1250 printf("%s/%d if=%s\n", namebuf, p->prefixlen,
1251 if_indextoname(p->if_index, ifix_buf));
1252
1253 gettimeofday(&now, 0);
1254 /*
1255 * meaning of fields, especially flags, is very different
1256 * by origin. notify the difference to the users.
1257 */
1258 printf("flags=%s%s%s%s%s",
1259 p->raflags.onlink ? "L" : "",
1260 p->raflags.autonomous ? "A" : "",
1261 (p->flags & NDPRF_ONLINK) != 0 ? "O" : "",
1262 (p->flags & NDPRF_DETACHED) != 0 ? "D" : "",
1263#ifdef NDPRF_HOME
1264 (p->flags & NDPRF_HOME) != 0 ? "H" : ""
1265#else
1266 ""
1267#endif
1268 );

Callers 1

mainFunction · 0.85

Calls 9

sysctlFunction · 0.85
mallocFunction · 0.85
inet_ntopFunction · 0.85
if_indextonameFunction · 0.85
getnbrinfoFunction · 0.85
sec2strFunction · 0.70
strlcpyFunction · 0.50
printfFunction · 0.50
freeFunction · 0.50

Tested by

no test coverage detected