| 978 | #endif /* _KERNEL */ |
| 979 | |
| 980 | void |
| 981 | kdebug_sockaddr(struct sockaddr *addr) |
| 982 | { |
| 983 | char buf[IPSEC_ADDRSTRLEN]; |
| 984 | |
| 985 | /* sanity check */ |
| 986 | if (addr == NULL) |
| 987 | panic("%s: NULL pointer was passed.\n", __func__); |
| 988 | |
| 989 | switch (addr->sa_family) { |
| 990 | #ifdef INET |
| 991 | case AF_INET: { |
| 992 | struct sockaddr_in *sin; |
| 993 | |
| 994 | sin = (struct sockaddr_in *)addr; |
| 995 | inet_ntop(AF_INET, &sin->sin_addr, buf, sizeof(buf)); |
| 996 | break; |
| 997 | } |
| 998 | #endif |
| 999 | #ifdef INET6 |
| 1000 | case AF_INET6: { |
| 1001 | struct sockaddr_in6 *sin6; |
| 1002 | |
| 1003 | sin6 = (struct sockaddr_in6 *)addr; |
| 1004 | if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) { |
| 1005 | snprintf(buf, sizeof(buf), "%s%%%u", |
| 1006 | inet_ntop(AF_INET6, &sin6->sin6_addr, buf, |
| 1007 | sizeof(buf)), sin6->sin6_scope_id); |
| 1008 | } else |
| 1009 | inet_ntop(AF_INET6, &sin6->sin6_addr, buf, |
| 1010 | sizeof(buf)); |
| 1011 | break; |
| 1012 | } |
| 1013 | #endif |
| 1014 | default: |
| 1015 | sprintf(buf, "unknown"); |
| 1016 | } |
| 1017 | printf("sockaddr{ len=%u family=%u addr=%s }\n", addr->sa_len, |
| 1018 | addr->sa_family, buf); |
| 1019 | } |
| 1020 | |
| 1021 | void |
| 1022 | ipsec_bindump(caddr_t buf, int len) |