# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.254 2001-09-17 06:22:32 guy Exp $ (LBL)
+# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.255 2001-09-17 20:06:17 fenner Exp $ (LBL)
#
# Various configurable paths (remember to edit Makefile.in, not Makefile)
print-igmp.c print-igrp.c print-ip.c print-ipcomp.c \
print-ipx.c print-isakmp.c print-isoclns.c print-krb.c \
print-l2tp.c print-lane.c print-lcp.c print-llc.c print-lwres.c \
- print-mobile.c print-mpls.c print-nfs.c print-ntp.c print-null.c \
- print-ospf.c print-pim.c print-ppp.c print-pppoe.c \
- print-pptp.c print-radius.c print-raw.c print-rip.c \
- print-rx.c print-sctp.c print-sl.c print-sll.c print-smb.c \
- print-snmp.c print-stp.c print-sunrpc.c print-tcp.c \
+ print-msdp.c print-mobile.c print-mpls.c print-nfs.c \
+ print-ntp.c print-null.c print-ospf.c print-pim.c \
+ print-ppp.c print-pppoe.c print-pptp.c print-radius.c \
+ print-raw.c print-rip.c print-rx.c print-sctp.c \
+ print-sl.c print-sll.c print-smb.c print-snmp.c \
+ print-stp.c print-sunrpc.c print-tcp.c \
print-telnet.c print-tftp.c print-timed.c print-token.c \
print-udp.c print-vjc.c print-vrrp.c print-wb.c print-zephyr.c \
setsignal.c smbutil.c tcpdump.c util.c
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.169 2001-09-17 06:22:32 guy Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.170 2001-09-17 20:06:17 fenner Exp $ (LBL)
*/
#ifndef tcpdump_interface_h
extern void llap_print(const u_char *, u_int);
extern void ltalk_if_print(u_char *, const struct pcap_pkthdr *,
const u_char *);
+extern void msdp_print(const unsigned char *, u_int);
extern void nfsreply_print(const u_char *, u_int, const u_char *);
extern void nfsreq_print(const u_char *, u_int, const u_char *);
extern void ns_print(const u_char *, u_int);
--- /dev/null
+/*
+ * Copyright (c) 2001 William C. Fenner.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code
+ * distributions retain the above copyright notice and this paragraph
+ * in its entirety, and (2) distributions including binary code include
+ * the above copyright notice and this paragraph in its entirety in
+ * the documentation or other materials provided with the distribution.
+ * The name of William C. Fenner may not be used to endorse or
+ * promote products derived from this software without specific prior
+ * written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND
+ * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
+ * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE.
+ */
+#ifndef lint
+static const char rcsid[] =
+ "@(#) $Header: /tcpdump/master/tcpdump/print-msdp.c,v 1.1 2001-09-17 20:06:18 fenner Exp $";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+
+#include "interface.h"
+#include "addrtoname.h"
+#include "extract.h"
+
+#define MSDP_TYPE_MAX 7
+
+void
+msdp_print(const unsigned char *sp, u_int length)
+{
+ unsigned int type, len;
+
+ TCHECK2(*sp, 3);
+ /* See if we think we're at the beginning of a compound packet */
+ type = *sp;
+ len = EXTRACT_16BITS(sp + 1);
+ if (len > 1500 || len < 3 || type == 0 || type > MSDP_TYPE_MAX)
+ goto trunc; /* not really truncated, but still not decodable */
+ (void)printf(" msdp:");
+ while (length > 0) {
+ TCHECK2(*sp, 3);
+ type = *sp;
+ len = EXTRACT_16BITS(sp + 1);
+ if (len > 1400 || vflag)
+ printf(" [len %d]", len);
+ if (len < 3)
+ goto trunc;
+ sp += 3;
+ length -= 3;
+ switch (type) {
+ case 1: /* IPv4 Source-Active */
+ case 3: /* IPv4 Source-Active Response */
+ if (type == 1)
+ (void)printf(" SA");
+ else
+ (void)printf(" SA-Response");
+ TCHECK(*sp);
+ (void)printf(" %d entries", *sp);
+ if (*sp * 12 + 8 < len) {
+ (void)printf(" [w/data]");
+ if (vflag > 1) {
+ (void)printf(" ");
+ ip_print(sp + *sp * 12 + 8 - 3,
+ len - (*sp * 12 + 8));
+ }
+ }
+ break;
+ case 2:
+ (void)printf(" SA-Request");
+ TCHECK2(*sp, 5);
+ (void)printf(" for %s", ipaddr_string(sp + 1));
+ break;
+ case 4:
+ (void)printf(" Keepalive");
+ if (len != 3)
+ (void)printf("[len=%d] ", len);
+ break;
+ case 5:
+ (void)printf(" Notification");
+ break;
+ default:
+ (void)printf(" [type=%d len=%d]", type, len);
+ break;
+ }
+ sp += (len - 3);
+ length -= (len - 3);
+ }
+ return;
+trunc:
+ (void)printf(" [|msdp]");
+}
#ifndef lint
static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/print-tcp.c,v 1.88 2001-08-20 17:53:53 fenner Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-tcp.c,v 1.89 2001-09-17 20:06:18 fenner Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
#ifndef NFS_PORT
#define NFS_PORT 2049
#endif
+#define MSDP_PORT 639
static int tcp_cksum(register const struct ip *ip,
register const struct tcphdr *tp,
(sport == NAMESERVER_PORT || dport == NAMESERVER_PORT)) {
/* TCP DNS query has 2byte length at the head */
ns_print(bp + 2, length - 2);
+ } else if (sport == MSDP_PORT || dport == MSDP_PORT) {
+ msdp_print(bp, length);
}
}
return;