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

Function fmt_sockaddr

tools/netstat/route.c:407–479  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

405}
406
407const char *
408fmt_sockaddr(struct sockaddr *sa, struct sockaddr *mask, int flags)
409{
410 static char buf[128];
411 const char *cp;
412
413 if (sa == NULL)
414 return ("null");
415
416 switch(sa->sa_family) {
417#ifdef INET6
418 case AF_INET6:
419 /*
420 * The sa6->sin6_scope_id must be filled here because
421 * this sockaddr is extracted from kmem(4) directly
422 * and has KAME-specific embedded scope id in
423 * sa6->sin6_addr.s6_addr[2].
424 */
425 in6_fillscopeid(satosin6(sa));
426 /* FALLTHROUGH */
427#endif /*INET6*/
428 case AF_INET:
429 if (flags & RTF_HOST)
430 cp = routename(sa, numeric_addr);
431 else if (mask)
432 cp = netname(sa, mask);
433 else
434 cp = netname(sa, NULL);
435 break;
436 case AF_NETGRAPH:
437 {
438 strlcpy(buf, ((struct sockaddr_ng *)sa)->sg_data,
439 sizeof(buf));
440 cp = buf;
441 break;
442 }
443 case AF_LINK:
444 {
445#if 0
446 struct sockaddr_dl *sdl = (struct sockaddr_dl *)sa;
447
448 /* Interface route. */
449 if (sdl->sdl_nlen)
450 cp = sdl->sdl_data;
451 else
452#endif
453 cp = routename(sa, 1);
454 break;
455 }
456 default:
457 {
458 u_char *s = (u_char *)sa->sa_data, *slim;
459 char *cq, *cqlim;
460
461 cq = buf;
462 slim = sa->sa_len + (u_char *) sa;
463 cqlim = cq + sizeof(buf) - sizeof(" ffff");
464 snprintf(cq, sizeof(buf), "(%d)", sa->sa_family);

Callers 3

update_global_mapFunction · 0.85
print_nhop_entry_sysctlFunction · 0.85
p_sockaddrFunction · 0.85

Calls 5

in6_fillscopeidFunction · 0.85
snprintfFunction · 0.85
routenameFunction · 0.70
netnameFunction · 0.70
strlcpyFunction · 0.50

Tested by

no test coverage detected