Move /var/svc/log to /var/log/svc
[unleashed/lotheac.git] / usr / src / cmd / ipf / lib / common / printpacket6.c
blobf0147f107f0261f2ff873dc86b25a0afb968769c
1 #include "ipf.h"
3 /*
4 * This is meant to work without the IPv6 header files being present or
5 * the inet_ntop() library.
6 */
7 void printpacket6(ip)
8 struct ip *ip;
10 u_char *buf, p;
11 u_short plen, *addrs;
12 tcphdr_t *tcp;
13 u_32_t flow;
15 buf = (u_char *)ip;
16 tcp = (tcphdr_t *)(buf + 40);
17 p = buf[6];
18 flow = ntohl(*(u_32_t *)buf);
19 flow &= 0xfffff;
20 plen = ntohs(*((u_short *)buf +2));
21 addrs = (u_short *)buf + 4;
23 printf("ip6/%d %d %#x %d", buf[0] & 0xf, plen, flow, p);
24 printf(" %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
25 ntohs(addrs[0]), ntohs(addrs[1]), ntohs(addrs[2]),
26 ntohs(addrs[3]), ntohs(addrs[4]), ntohs(addrs[5]),
27 ntohs(addrs[6]), ntohs(addrs[7]));
28 if (plen >= 4)
29 if (p == IPPROTO_TCP || p == IPPROTO_UDP)
30 (void)printf(",%d", ntohs(tcp->th_sport));
31 printf(" >");
32 addrs += 8;
33 printf(" %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
34 ntohs(addrs[0]), ntohs(addrs[1]), ntohs(addrs[2]),
35 ntohs(addrs[3]), ntohs(addrs[4]), ntohs(addrs[5]),
36 ntohs(addrs[6]), ntohs(addrs[7]));
37 if (plen >= 4)
38 if (p == IPPROTO_TCP || p == IPPROTO_UDP)
39 (void)printf(",%d", ntohs(tcp->th_dport));
40 putchar('\n');