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

Function print_getmsg

tools/route/route.c:1809–1887  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1807}
1808
1809static void
1810print_getmsg(struct rt_msghdr *rtm, int msglen, int fib)
1811{
1812 struct sockaddr *sp[RTAX_MAX];
1813 struct timespec ts;
1814 char *cp;
1815 int i;
1816
1817 memset(sp, 0, sizeof(sp));
1818 (void)printf(" route to: %s\n",
1819 routename((struct sockaddr *)&so[RTAX_DST]));
1820 if (rtm->rtm_version != RTM_VERSION) {
1821 warnx("routing message version %d not understood",
1822 rtm->rtm_version);
1823 return;
1824 }
1825 if (rtm->rtm_msglen > msglen) {
1826 warnx("message length mismatch, in packet %d, returned %d",
1827 rtm->rtm_msglen, msglen);
1828 return;
1829 }
1830 if (rtm->rtm_errno) {
1831 errno = rtm->rtm_errno;
1832 warn("message indicates error %d", errno);
1833 return;
1834 }
1835 cp = ((char *)(rtm + 1));
1836 for (i = 0; i < RTAX_MAX; i++)
1837 if (rtm->rtm_addrs & (1 << i)) {
1838 sp[i] = (struct sockaddr *)cp;
1839 cp += SA_SIZE((struct sockaddr *)cp);
1840 }
1841 if ((rtm->rtm_addrs & RTA_IFP) &&
1842 (sp[RTAX_IFP]->sa_family != AF_LINK ||
1843 ((struct sockaddr_dl *)(void *)sp[RTAX_IFP])->sdl_nlen == 0))
1844 sp[RTAX_IFP] = NULL;
1845 if (sp[RTAX_DST])
1846 (void)printf("destination: %s\n", routename(sp[RTAX_DST]));
1847 if (sp[RTAX_NETMASK])
1848 (void)printf(" mask: %s\n", routename(sp[RTAX_NETMASK]));
1849 if (sp[RTAX_GATEWAY] && (rtm->rtm_flags & RTF_GATEWAY))
1850 (void)printf(" gateway: %s\n", routename(sp[RTAX_GATEWAY]));
1851 if (fib >= 0)
1852 (void)printf(" fib: %u\n", (unsigned int)fib);
1853 if (sp[RTAX_IFP])
1854 (void)printf(" interface: %.*s\n",
1855 ((struct sockaddr_dl *)(void *)sp[RTAX_IFP])->sdl_nlen,
1856 ((struct sockaddr_dl *)(void *)sp[RTAX_IFP])->sdl_data);
1857 (void)printf(" flags: ");
1858 printb(rtm->rtm_flags, routeflags);
1859
1860#define lock(f) ((rtm->rtm_rmx.rmx_locks & __CONCAT(RTV_,f)) ? 'L' : ' ')
1861#define msec(u) (((u) + 500) / 1000) /* usec to msec */
1862 printf("\n%9s %9s %9s %9s %9s %10s %9s\n", "recvpipe",
1863 "sendpipe", "ssthresh", "rtt,msec", "mtu ", "weight", "expire");
1864 printf("%8lu%c ", rtm->rtm_rmx.rmx_recvpipe, lock(RPIPE));
1865 printf("%8lu%c ", rtm->rtm_rmx.rmx_sendpipe, lock(SPIPE));
1866 printf("%8lu%c ", rtm->rtm_rmx.rmx_ssthresh, lock(SSTHRESH));

Callers 1

route.cFile · 0.85

Calls 7

memsetFunction · 0.85
pmsg_commonFunction · 0.85
putcharFunction · 0.85
routenameFunction · 0.70
printbFunction · 0.70
printfFunction · 0.50
lockClass · 0.50

Tested by

no test coverage detected