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

Function p_rtentry_sysctl

tools/netstat/route.c:315–373  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

313}
314
315static void
316p_rtentry_sysctl(const char *name, struct rt_msghdr *rtm)
317{
318 struct sockaddr *sa, *addr[RTAX_MAX];
319 char buffer[128];
320 char prettyname[128];
321 int i, protrusion;
322
323 xo_open_instance(name);
324 sa = (struct sockaddr *)(rtm + 1);
325 for (i = 0; i < RTAX_MAX; i++) {
326 if (rtm->rtm_addrs & (1 << i)) {
327 addr[i] = sa;
328 sa = (struct sockaddr *)((char *)sa + SA_SIZE(sa));
329 }
330 }
331
332 protrusion = p_sockaddr("destination", addr[RTAX_DST],
333 addr[RTAX_NETMASK],
334 rtm->rtm_flags, wid_dst);
335 protrusion = p_sockaddr("gateway", addr[RTAX_GATEWAY], NULL, RTF_HOST,
336 wid_gw - protrusion);
337 snprintf(buffer, sizeof(buffer), "{[:-%d}{:flags/%%s}{]:} ",
338 wid_flags - protrusion);
339 p_flags(rtm->rtm_flags, buffer);
340 if (Wflag) {
341 /* XXX: use=0? */
342 xo_emit("{t:nhop/%*lu} ", wid_mtu, rtm->rtm_rmx.rmx_nhidx);
343
344 if (rtm->rtm_rmx.rmx_mtu != 0)
345 xo_emit("{t:mtu/%*lu} ", wid_mtu, rtm->rtm_rmx.rmx_mtu);
346 else
347 xo_emit("{P:/%*s} ", wid_mtu, "");
348 }
349
350 memset(prettyname, 0, sizeof(prettyname));
351 if (rtm->rtm_index < ifmap_size) {
352 strlcpy(prettyname, ifmap[rtm->rtm_index].ifname,
353 sizeof(prettyname));
354 if (*prettyname == '\0')
355 strlcpy(prettyname, "---", sizeof(prettyname));
356 }
357
358 if (Wflag)
359 xo_emit("{t:interface-name/%*s}", wid_if, prettyname);
360 else
361 xo_emit("{t:interface-name/%*.*s}", wid_if, wid_if,
362 prettyname);
363 if (rtm->rtm_rmx.rmx_expire) {
364 time_t expire_time;
365
366 if ((expire_time = rtm->rtm_rmx.rmx_expire - uptime.tv_sec) > 0)
367 xo_emit(" {:expire-time/%*d}", wid_expire,
368 (int)expire_time);
369 }
370
371 xo_emit("\n");
372 xo_close_instance(name);

Callers 1

p_rtable_sysctlFunction · 0.85

Calls 8

xo_open_instanceFunction · 0.85
snprintfFunction · 0.85
p_flagsFunction · 0.85
xo_emitFunction · 0.85
memsetFunction · 0.85
xo_close_instanceFunction · 0.85
p_sockaddrFunction · 0.70
strlcpyFunction · 0.50

Tested by

no test coverage detected