summaryrefslogtreecommitdiff
path: root/usr/src/cmd/ipf/lib/common/printpacket.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/ipf/lib/common/printpacket.c')
-rw-r--r--usr/src/cmd/ipf/lib/common/printpacket.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/usr/src/cmd/ipf/lib/common/printpacket.c b/usr/src/cmd/ipf/lib/common/printpacket.c
index 6f2194af70..4121e3acd5 100644
--- a/usr/src/cmd/ipf/lib/common/printpacket.c
+++ b/usr/src/cmd/ipf/lib/common/printpacket.c
@@ -3,7 +3,7 @@
*
* See the IPFILTER.LICENCE file for details on licencing.
*
- * $Id: printpacket.c,v 1.12 2002/11/02 13:27:29 darrenr Exp $
+ * $Id: printpacket.c,v 1.12.4.1 2005/02/21 05:09:24 darrenr Exp $
*/
#include "ipf.h"
@@ -18,11 +18,15 @@ struct ip *ip;
{
struct tcphdr *tcp;
u_short len;
+ u_short off;
- if (IP_V(ip) == 6)
+ if (IP_V(ip) == 6) {
+ off = 0;
len = ntohs(((u_short *)ip)[2]) + 40;
- else
+ } else {
+ off = ntohs(ip->ip_off);
len = ntohs(ip->ip_len);
+ }
if ((opts & OPT_HEX) == OPT_HEX) {
u_char *s;
@@ -47,15 +51,15 @@ struct ip *ip;
tcp = (struct tcphdr *)((char *)ip + (IP_HL(ip) << 2));
printf("ip %d(%d) %d", ntohs(ip->ip_len), IP_HL(ip) << 2, ip->ip_p);
- if (ip->ip_off & IP_OFFMASK)
- printf(" @%d", ip->ip_off << 3);
+ if (off & IP_OFFMASK)
+ printf(" @%d", off << 3);
printf(" %s", inet_ntoa(ip->ip_src));
- if (!(ip->ip_off & IP_OFFMASK))
+ if (!(off & IP_OFFMASK))
if (ip->ip_p == IPPROTO_TCP || ip->ip_p == IPPROTO_UDP)
printf(",%d", ntohs(tcp->th_sport));
printf(" > ");
printf("%s", inet_ntoa(ip->ip_dst));
- if (!(ip->ip_off & IP_OFFMASK)) {
+ if (!(off & IP_OFFMASK)) {
if (ip->ip_p == IPPROTO_TCP || ip->ip_p == IPPROTO_UDP)
printf(",%d", ntohs(tcp->th_dport));
if ((ip->ip_p == IPPROTO_TCP) && (tcp->th_flags != 0)) {