Vendor import of tcpdump 4.4.0.

This commit is contained in:
Xin LI 2013-05-30 06:46:26 +00:00
parent 0de8253a2f
commit f3d019c7d2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/vendor/tcpdump/dist/; revision=251127
svn path=/vendor/tcpdump/4.4.0/; revision=251128; tag=vendor/tcpdump/4.4.0
78 changed files with 5912 additions and 7964 deletions

34
CHANGES
View File

@ -1,3 +1,37 @@
Thursday February 19, 2013 guy@alum.mit.edu.
Summary for 4.4.0 tcpdump release
RPKI-RTR (RFC6810) is now official (TCP Port 323)
Fix detection of OpenSSL libcrypto.
Add DNSSL (RFC6106) support.
Add "radius" as an option for -T.
Update Action codes for handle_action function according to
802.11s amendment.
Decode DHCPv6 AFTR-Name option (RFC6334).
Updates for Babel.
Fix printing of infinite lifetime in ICMPv6.
Added support for SPB, SPBM Service Identifier, and Unicast
Address sub-TLV in ISIS.
Decode RIPv2 authentication up to RFC4822.
Fix RIP Request/full table decoding issues.
On Linux systems with cap-ng.h, drop root privileges
using Linux Capabilities.
Add support for reading multiple files.
Wednesday November 28, 2012 guy@alum.mit.edu.
Summary for 4.3.1 tcpdump release
Print "LLDP, length N" for LLDP packets even when not in verbose
mode, so something is printed even if only the timestamp is
present
Document "-T carp"
Print NTP poll interval correctly (it's an exponent, so print
both its raw value and 2^value)
Document that "-e" is used to get MAC addresses
More clearly document that you need to escape or quote
backslashes in filter expressions on the command line
Fix some "the the" in the man page
Use the right maximum path length
Don't treat 192_1_2, when passed to -i, as an interface number
Friday April 3, 2011. mcr@sandelman.ca.
Summary for 4.3.0 tcpdump release
fixes for forces: SPARSE data (per RFC 5810)

View File

@ -52,6 +52,7 @@ Additional people who have contributed patches:
David Horn <dhorn2000 at gmail dot com>
David Smith <dsmith at redhat dot com>
David Young <dyoung at ojctech dot com>
Denis Ovsienko <infrastation at yandex dot ru>
Dmitry Eremin-Solenikov <dbaryshkov at gmail dot com>
Don Ebright <Don dot Ebright at compuware dot com>
Eddie Kohler <xexd at sourceforge dot net>

View File

@ -84,7 +84,7 @@ CSRC = addrtoname.c af.c checksum.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c
print-l2tp.c print-lane.c print-ldp.c print-lldp.c print-llc.c \
print-lmp.c print-lspping.c print-lwapp.c \
print-lwres.c print-mobile.c print-mpcp.c print-mpls.c print-msdp.c \
print-nfs.c print-ntp.c print-null.c print-olsr.c print-ospf.c \
print-msnlb.c print-nfs.c print-ntp.c print-null.c print-olsr.c print-ospf.c \
print-pgm.c print-pim.c \
print-ppi.c print-ppp.c print-pppoe.c print-pptp.c \
print-radius.c print-raw.c print-rip.c print-rpki-rtr.c print-rrcp.c print-rsvp.c \
@ -93,7 +93,7 @@ CSRC = addrtoname.c af.c checksum.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c
print-symantec.c print-syslog.c print-tcp.c print-telnet.c print-tftp.c \
print-timed.c print-tipc.c print-token.c print-udld.c print-udp.c \
print-usb.c print-vjc.c print-vqp.c print-vrrp.c print-vtp.c \
print-wb.c print-zephyr.c signature.c setsignal.c tcpdump.c util.c
print-wb.c print-zephyr.c print-zeromq.c print-vxlan.c print-otv.c signature.c setsignal.c tcpdump.c util.c
LIBNETDISSECT_SRC=print-isakmp.c
LIBNETDISSECT_OBJ=$(LIBNETDISSECT_SRC:.c=.o)
@ -263,93 +263,8 @@ EXTRA_DIST = \
stime.awk \
strcasecmp.c \
tcpdump.1.in \
tests/02-sunrise-sunset-esp.pcap \
tests/08-sunrise-sunset-aes.pcap \
tests/08-sunrise-sunset-esp2.pcap \
tests/QinQpacket.out \
tests/QinQpacket.pcap \
tests/QinQpacketv.out \
tests/TESTLIST \
tests/TESTonce \
tests/TESTrun.sh \
tests/babel.pcap \
tests/babel1.out \
tests/babel1v.out \
tests/bgp-infinite-loop.pcap \
tests/bgp_vpn_attrset.out \
tests/bgp_vpn_attrset.pcap \
tests/chdlc-slarp-short.pcap \
tests/chdlc-slarp.pcap \
tests/dio.out \
tests/dio.pcap \
tests/e1000g.out \
tests/e1000g.pcap \
tests/eapon1.gdbinit \
tests/eapon1.out \
tests/eapon1.pcap \
tests/empty.uu \
tests/esp-secrets.txt \
tests/esp0.out \
tests/esp1.gdbinit \
tests/esp1.out \
tests/esp2.gdbinit \
tests/esp2.out \
tests/esp3.gdbinit \
tests/esp4.gdbinit \
tests/esp5.gdbinit \
tests/esp5.out \
tests/espudp1.out \
tests/espudp1.pcap \
tests/forces1.out \
tests/forces1.pcap \
tests/forces1vvv.out \
tests/forces1vvvv.out \
tests/forces2v.out \
tests/forces2vv.out \
tests/forces3vvv.out \
tests/icmpv6.out \
tests/icmpv6.pcap \
tests/ikev2four.out \
tests/ikev2four.pcap \
tests/ikev2fourv.out \
tests/ikev2fourv4.out \
tests/ikev2pI2-secrets.txt \
tests/ikev2pI2.out \
tests/ikev2pI2.pcap \
tests/isakmp-delete-segfault.pcap \
tests/isakmp-identification-segfault.pcap \
tests/isakmp-pointer-loop.pcap \
tests/isakmp1.out \
tests/isakmp2.out \
tests/isakmp3.out \
tests/isakmp4.out \
tests/isakmp4500.pcap \
tests/isis-infinite-loop.pcap \
tests/ldp-infinite-loop.pcap \
tests/lmp.out \
tests/lmp.pcap \
tests/lmp.sh \
tests/lspping-fec-ldp.pcap \
tests/lspping-fec-rsvp.pcap \
tests/mpls-ldp-hello.out \
tests/mpls-ldp-hello.pcap \
tests/mpls-traceroute.pcap \
tests/ospf-gmpls.out \
tests/ospf-gmpls.pcap \
tests/pppoe.out \
tests/pppoe.pcap \
tests/print-A.out \
tests/print-AA.out \
tests/print-capX.out \
tests/print-capXX.out \
tests/print-flags.pcap \
tests/print-flags.sh \
tests/print-x.out \
tests/print-xx.out \
tests/rsvp-infinite-loop.pcap \
tests/sflow_multiple_counter_30_pdus.out \
tests/sflow_multiple_counter_30_pdus.pcap \
vfprintf.c \
win32/Include/bittypes.h \
win32/Include/errno.h \
win32/Include/getopt.h \
win32/Include/w32_fzs.h \
@ -358,6 +273,8 @@ EXTRA_DIST = \
win32/prj/WinDump.dsp \
win32/prj/WinDump.dsw
TEST_DIST= `find tests \( -name 'DIFF' -prune \) -o \( -name NEW -prune \) -o -type f \! -name '.*' \! -name '*~' -print`
all: $(PROG)
$(PROG): $(OBJ) @V_PCAPDEP@
@ -443,9 +360,12 @@ TAGS: $(TAGFILES)
releasetar:
@cwd=`pwd` ; dir=`basename $$cwd` ; name=$(PROG)-`cat VERSION` ; \
mkdir $$name; \
tar cf - $(CSRC) $(HDR) $(LIBNETDISSECT_SRC) $(EXTRA_DIST) | (cd $$name; tar xf -); \
tar cf - $(CSRC) $(HDR) $(LIBNETDISSECT_SRC) $(EXTRA_DIST) $(TEST_DIST) | (cd $$name; tar xf -); \
tar -c -z -f $$name.tar.gz $$name; \
rm -rf $$name
testlist:
echo $(TEST_DIST)
depend: $(GENSRC)
${srcdir}/mkdep -c $(CC) $(DEFS) $(INCLS) $(SRC)

22
README
View File

@ -13,8 +13,11 @@ Anonymous Git is available via:
Version 4.x.y of TCPDUMP can be retrieved with the CVS tag "tcpdump_4_xrely":
cvs -d :pserver:cvs.tcpdump.org:/tcpdump/master checkout -r tcpdump_4_xrely tcpdump
Please submit patches against the master copy to the tcpdump project on
sourceforge.net.
Please submit patches by forking the branch on GitHub at
http://github.com/mcr/tcpdump/tree/master
and issuing a pull request.
formerly from Lawrence Berkeley National Laboratory
Network Research Group <tcpdump@ee.lbl.gov>
@ -68,16 +71,19 @@ documentation.
Problems, bugs, questions, desirable enhancements, etc. should be sent
to the address "tcpdump-workers@lists.tcpdump.org". Bugs, support
requests, and feature requests may also be submitted on the SourceForge
site for tcpdump at
requests, and feature requests may also be submitted on the GitHub issue
tracker for tcpdump at
http://sourceforge.net/projects/tcpdump/
https://github.com/mcr/tcpdump/issues
Source code contributions, etc. should be sent to the email address
submitted as patches on the SourceForge site for tcpdump.
above or submitted by forking the branch on GitHub at
Current versions can be found at www.tcpdump.org, or the SourceForge
site for tcpdump.
http://github.com/mcr/tcpdump/tree/master
and issuing a pull request.
Current versions can be found at www.tcpdump.org.
- The TCPdump team

View File

@ -1 +1 @@
4.3.0
4.4.0

View File

@ -381,6 +381,9 @@ lookup_bytestring(register const u_char *bs, const unsigned int nlen)
tp->e_addr2 = k;
tp->e_bs = (u_char *) calloc(1, nlen + 1);
if (tp->e_bs == NULL)
error("lookup_bytestring: calloc");
memcpy(tp->e_bs, bs, nlen);
tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp));
if (tp->e_nxt == NULL)

View File

@ -152,8 +152,6 @@ create_osi_cksum (const u_int8_t *pptr, int checksum_offset, int length)
u_int16_t checksum;
int index;
checksum = 0;
c0 = 0;
c1 = 0;

10771
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -994,13 +994,13 @@ AC_LBL_UNALIGNED_ACCESS
AC_VAR_H_ERRNO
# Check for SSLeay
AC_MSG_CHECKING(whether to use SSLeay libcrypto)
# Check for OpenSSL libcrypto
AC_MSG_CHECKING(whether to use OpenSSL libcrypto)
# Specify location for both includes and libraries.
want_libcrypto=youmama
want_libcrypto=ifavailable
AC_ARG_WITH(crypto,
AS_HELP_STRING([--with-crypto@<:@=PATH@:>@],
[use SSLeay libcrypto (located in directory PATH, if supplied). @<:@default=yes, if available@:>@]),
AS_HELP_STRING([--with-crypto],
[use OpenSSL libcrypto @<:@default=yes, if available@:>@]),
[
if test $withval = no
then
@ -1010,10 +1010,6 @@ AC_ARG_WITH(crypto,
then
want_libcrypto=yes
AC_MSG_RESULT(yes)
else
want_libcrypto=yes
AC_MSG_RESULT(yes)
crypto_dir=$withval
fi
],[
#
@ -1023,63 +1019,8 @@ AC_ARG_WITH(crypto,
AC_MSG_RESULT([yes, if available])
])
if test "$want_libcrypto" != "no"; then
ac_cv_ssleay_path=no
incdir=no
if test "x$crypto_dir" = x; then
#
# Location not specified; check the default locations.
#
AC_MSG_CHECKING(where SSLeay is located)
dirs="/usr /usr/local /usr/local/ssl /usr/pkg"
if test "x${host_alias}" != x; then
dirs="/usr/${host_alias} $dirs"
fi
for dir in $dirs; do
AC_LBL_SSLEAY($dir)
if test "$ac_cv_ssleay_path" != "no" -a "$incdir" != "no"; then
break;
else
ac_cv_ssleay_path=no
incdir=no
fi
done
if test "$ac_cv_ssleay_path" != no; then
AC_MSG_RESULT($ac_cv_ssleay_path)
fi
else
AC_MSG_CHECKING(for SSLeay in $crypto_dir)
AC_LBL_SSLEAY($crypto_dir)
if test "$ac_cv_ssleay_path" != no; then
AC_MSG_RESULT(found)
fi
fi
if test "$ac_cv_ssleay_path" != no; then
V_INCLS="$V_INCLS $incdir"
if test "$dir" != "/usr"; then
LDFLAGS="-L$dir/lib $LDFLAGS"
fi
if test -f $ac_cv_ssleay_path/lib/libRSAglue.a; then
LIBS="$LIBS -lRSAglue"
fi
if test -f $ac_cv_ssleay_path/lib/librsaref.a; then
LIBS="$LIBS -lrsaref"
fi
AC_CHECK_LIB(crypto, DES_cbc_encrypt)
savedcppflags="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $V_INCLS"
AC_CHECK_HEADERS(openssl/evp.h)
CPPFLAGS="$savedcppflags"
else
#
# Not found. Did the user explicitly ask for it?
#
AC_MSG_RESULT(not found)
if test "$want_libcrypto" = yes; then
AC_MSG_ERROR(SSLeay not found)
fi
fi
AC_CHECK_LIB(crypto, DES_cbc_encrypt)
AC_CHECK_HEADERS(openssl/evp.h)
fi
dnl

View File

@ -153,6 +153,9 @@
#ifndef ETHERTYPE_PPPOES2
#define ETHERTYPE_PPPOES2 0x3c13
#endif
#ifndef ETHERTYPE_MS_NLB_HB
#define ETHERTYPE_MS_NLB_HB 0x886f /* MS Network Load Balancing Heartbeat */
#endif
#ifndef ETHERTYPE_JUMBO
#define ETHERTYPE_JUMBO 0x8870
#endif

11
icmp6.h
View File

@ -277,6 +277,7 @@ struct nd_opt_hdr { /* Neighbor discovery option header */
#define ND_OPT_HOMEAGENT_INFO 8
#define ND_OPT_ROUTE_INFO 9 /* draft-ietf-ipngwg-router-preference, not officially assigned yet */
#define ND_OPT_RDNSS 25
#define ND_OPT_DNSSL 31
struct nd_opt_prefix_info { /* prefix information */
u_int8_t nd_opt_pi_type;
@ -308,7 +309,7 @@ struct nd_opt_mtu { /* MTU option */
u_int32_t nd_opt_mtu_mtu;
};
struct nd_opt_rdnss { /* RDNSS RFC 5006 */
struct nd_opt_rdnss { /* RDNSS RFC 6106 5.1 */
u_int8_t nd_opt_rdnss_type;
u_int8_t nd_opt_rdnss_len;
u_int16_t nd_opt_rdnss_reserved;
@ -316,6 +317,14 @@ struct nd_opt_rdnss { /* RDNSS RFC 5006 */
struct in6_addr nd_opt_rdnss_addr[1]; /* variable-length */
};
struct nd_opt_dnssl { /* DNSSL RFC 6106 5.2 */
u_int8_t nd_opt_dnssl_type;
u_int8_t nd_opt_dnssl_len;
u_int16_t nd_opt_dnssl_reserved;
u_int32_t nd_opt_dnssl_lifetime;
/* followed by list of DNS search domains, variable-length */
};
struct nd_opt_advinterval { /* Advertisement interval option */
u_int8_t nd_opt_adv_type;
u_int8_t nd_opt_adv_len;

View File

@ -70,7 +70,10 @@ extern char *strsep(char **, const char *);
#define PT_CNFP 7 /* Cisco NetFlow protocol */
#define PT_TFTP 8 /* trivial file transfer protocol */
#define PT_AODV 9 /* Ad-hoc On-demand Distance Vector Protocol */
#define PT_CARP 10 /* Common Address Redundancy Protocol */
#define PT_CARP 10 /* Common Address Redundancy Protocol */
#define PT_RADIUS 11 /* RADIUS authentication Protocol */
#define PT_ZMTP1 12 /* ZeroMQ Message Transport Protocol 1.0 */
#define PT_VXLAN 13 /* Virtual eXtensible Local Area Network */
#ifndef min
#define min(a,b) ((a)>(b)?(b):(a))
@ -215,6 +218,7 @@ 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, int);
extern const u_char * ns_nprint (register const u_char *, register const u_char *);
extern void ntp_print(const u_char *, u_int);
extern u_int null_if_print(const struct pcap_pkthdr *, const u_char *);
extern void ospf_print(const u_char *, u_int, const u_char *);
@ -309,6 +313,7 @@ extern void forces_print(const u_char *, u_int);
extern void mpls_print(const u_char *, u_int);
extern void mpls_lsp_ping_print(const u_char *, u_int);
extern void zephyr_print(const u_char *, int);
extern void zmtp1_print(const u_char *, u_int);
extern void hsrp_print(const u_char *, u_int);
extern void bfd_print(const u_char *, u_int, u_int);
extern void sip_print(const u_char *, u_int);

View File

@ -2,7 +2,7 @@
* Copyright (c) 1988-1997
* The Regents of the University of California. All rights reserved.
*
* Copyright (c) 1998-2004 Michael Richardson <mcr@tcpdump.org>
* Copyright (c) 1998-2012 Michael Richardson <mcr@tcpdump.org>
* The TCPDUMP project
*
* Redistribution and use in source and binary forms, with or without
@ -110,7 +110,7 @@ struct netdissect_options {
int ndo_jflag; /* packet time stamp source */
int ndo_pflag; /* don't go promiscuous */
int ndo_Cflag; /* rotate dump files after this many bytes */
int ndo_Cflag; /* rotate dump files after this many bytes */
int ndo_Cflag_count; /* Keep track of which file number we're writing */
int ndo_Gflag; /* rotate dump files after this many seconds */
int ndo_Gflag_count; /* number of files created with Gflag rotation */
@ -177,6 +177,12 @@ struct netdissect_options {
#define PT_RTCP 5 /* Real-Time Applications control protocol */
#define PT_SNMP 6 /* Simple Network Management Protocol */
#define PT_CNFP 7 /* Cisco NetFlow protocol */
#define PT_TFTP 8 /* trivial file transfer protocol */
#define PT_AODV 9 /* Ad-hoc On-demand Distance Vector Protocol */
#define PT_CARP 10 /* Common Address Redundancy Protocol */
#define PT_RADIUS 11 /* RADIUS authentication Protocol */
#define PT_ZMTP1 12 /* ZeroMQ Message Transport Protocol 1.0 */
#define PT_VXLAN 13 /* Virtual eXtensible Local Area Network */
#ifndef min
#define min(a,b) ((a)>(b)?(b):(a))
@ -234,7 +240,7 @@ struct netdissect_options {
#define ND_PRINT(STUFF) (*ndo->ndo_printf)STUFF
#define ND_DEFAULTPRINT(ap, length) (*ndo->ndo_default_print)(ndo, ap, length)
#if 0
#if 0
extern void ts_print(netdissect_options *ipdo,
const struct timeval *);
extern void relts_print(int);
@ -281,6 +287,7 @@ extern int esp_print(netdissect_options *,
int *nhdr, int *padlen);
extern void arp_print(netdissect_options *,const u_char *, u_int, u_int);
extern void tipc_print(netdissect_options *, const u_char *, u_int, u_int);
extern void msnlb_print(netdissect_options *, const u_char *, u_int);
extern void icmp6_print(netdissect_options *ndo, const u_char *,
u_int, const u_char *, int);
extern void isakmp_print(netdissect_options *,const u_char *,
@ -298,11 +305,11 @@ extern void ether_print(netdissect_options *,
void (*)(netdissect_options *, const u_char *),
const u_char *);
extern u_int ether_if_print(netdissect_options *,
extern u_int ether_if_print(netdissect_options *,
const struct pcap_pkthdr *,const u_char *);
extern u_int netanalyzer_if_print(netdissect_options *,
extern u_int netanalyzer_if_print(netdissect_options *,
const struct pcap_pkthdr *,const u_char *);
extern u_int netanalyzer_transparent_if_print(netdissect_options *,
extern u_int netanalyzer_transparent_if_print(netdissect_options *,
const struct pcap_pkthdr *,
const u_char *);
@ -407,7 +414,7 @@ extern void rip_print(netdissect_options *,const u_char *, u_int);
extern void rpki_rtr_print(netdissect_options *,const u_char *, u_int);
extern void sctp_print(netdissect_options *ndo,
const u_char *bp, const u_char *bp2,
const u_char *bp, const u_char *bp2,
u_int sctpPacketLength);
extern void sl_if_print(u_char *,const struct pcap_pkthdr *, const u_char *);

View File

@ -36,6 +36,7 @@ const struct tok nlpid_values[] = {
{ NLPID_ISIS, "IS-IS" },
{ NLPID_CONS, "CONS" },
{ NLPID_IDRP, "IDRP" },
{ NLPID_SPB, "ISIS_SPB" },
{ NLPID_MFR, "FRF.15" },
{ NLPID_IP, "IPv4" },
{ NLPID_PPP, "PPP" },

View File

@ -16,16 +16,17 @@
extern const struct tok nlpid_values[];
#define NLPID_NULLNS 0x00
#define NLPID_NULLNS 0x00
#define NLPID_Q933 0x08 /* ANSI T1.617 Annex D or ITU-T Q.933 Annex A */
#define NLPID_LMI 0x09 /* The original, aka Cisco, aka Gang of Four */
#define NLPID_SNAP 0x80
#define NLPID_CLNP 0x81 /* iso9577 */
#define NLPID_ESIS 0x82 /* iso9577 */
#define NLPID_ISIS 0x83 /* iso9577 */
#define NLPID_CLNP 0x81 /* iso9577 */
#define NLPID_ESIS 0x82 /* iso9577 */
#define NLPID_ISIS 0x83 /* iso9577 */
#define NLPID_CONS 0x84
#define NLPID_IDRP 0x85
#define NLPID_MFR 0xb1 /* FRF.15 */
#define NLPID_SPB 0xc1 /* IEEE 802.1aq/D4.5 */
#define NLPID_IP 0xcc
#define NLPID_PPP 0xcf
#define NLPID_X25_ESIS 0x8a

View File

@ -1223,6 +1223,34 @@ handle_deauth(const struct mgmt_header_t *pmh, const u_char *p, u_int length)
printf("Act#%d", (v)) \
)
#define PRINT_MESH_ACTION(v) (\
(v) == 0 ? printf("MeshLink") : \
(v) == 1 ? printf("HWMP") : \
(v) == 2 ? printf("Gate Announcement") : \
(v) == 3 ? printf("Congestion Control") : \
(v) == 4 ? printf("MCCA Setup Request") : \
(v) == 5 ? printf("MCCA Setup Reply") : \
(v) == 6 ? printf("MCCA Advertisement Request") : \
(v) == 7 ? printf("MCCA Advertisement") : \
(v) == 8 ? printf("MCCA Teardown") : \
(v) == 9 ? printf("TBTT Adjustment Request") : \
(v) == 10 ? printf("TBTT Adjustment Response") : \
printf("Act#%d", (v)) \
)
#define PRINT_MULTIHOP_ACTION(v) (\
(v) == 0 ? printf("Proxy Update") : \
(v) == 1 ? printf("Proxy Update Confirmation") : \
printf("Act#%d", (v)) \
)
#define PRINT_SELFPROT_ACTION(v) (\
(v) == 1 ? printf("Peering Open") : \
(v) == 2 ? printf("Peering Confirm") : \
(v) == 3 ? printf("Peering Close") : \
(v) == 4 ? printf("Group Key Inform") : \
(v) == 5 ? printf("Group Key Acknowledge") : \
printf("Act#%d", (v)) \
)
static int
handle_action(const struct mgmt_header_t *pmh, const u_char *p, u_int length)
{
@ -1241,12 +1269,13 @@ handle_action(const struct mgmt_header_t *pmh, const u_char *p, u_int length)
case 2: printf("DLS Act#%d", p[1]); break;
case 3: printf("BA "); PRINT_BA_ACTION(p[1]); break;
case 7: printf("HT "); PRINT_HT_ACTION(p[1]); break;
case 13: printf("MeshLMetric "); PRINT_MESHLINK_ACTION(p[1]); break;
case 15: printf("Interwork Act#%d", p[1]); break;
case 16: printf("Resource Act#%d", p[1]); break;
case 17: printf("Proxy Act#%d", p[1]); break;
case 30: printf("MeshPeering "); PRINT_MESHPEERING_ACTION(p[1]); break;
case 32: printf("MeshPath "); PRINT_MESHPATH_ACTION(p[1]); break;
case 13: printf("MeshAction "); PRINT_MESH_ACTION(p[1]); break;
case 14:
printf("MultiohopAction ");
PRINT_MULTIHOP_ACTION(p[1]); break;
case 15:
printf("SelfprotectAction ");
PRINT_SELFPROT_ACTION(p[1]); break;
case 127: printf("Vendor Act#%d", p[1]); break;
default:
printf("Reserved(%d) Act#%d", p[0], p[1]);

View File

@ -81,6 +81,8 @@ babel_print(const u_char *cp, u_int length) {
#define MESSAGE_UPDATE 8
#define MESSAGE_REQUEST 9
#define MESSAGE_MH_REQUEST 10
#define MESSAGE_TSPC 11
#define MESSAGE_HMAC 12
static const char *
format_id(const u_char *id)
@ -102,7 +104,11 @@ format_prefix(const u_char *prefix, unsigned char plen)
if(plen >= 96 && memcmp(prefix, v4prefix, 12) == 0)
snprintf(buf, 50, "%s/%u", ipaddr_string(prefix + 12), plen - 96);
else
#ifdef INET6
snprintf(buf, 50, "%s/%u", ip6addr_string(prefix), plen);
#else
snprintf(buf, 50, "IPv6 addresses not supported");
#endif
buf[49] = '\0';
return buf;
}
@ -113,7 +119,11 @@ format_address(const u_char *prefix)
if(memcmp(prefix, v4prefix, 12) == 0)
return ipaddr_string(prefix + 12);
else
#ifdef INET6
return ip6addr_string(prefix);
#else
return "IPv6 addresses not supported";
#endif
}
static int
@ -199,7 +209,7 @@ babel_print_v2(const u_char *cp, u_int length) {
i = 0;
while(i < bodylen) {
const u_char *message;
u_char type, len;
u_int type, len;
message = cp + 4 + i;
TCHECK2(*message, 2);
@ -394,6 +404,29 @@ babel_print_v2(const u_char *cp, u_int length) {
}
}
break;
case MESSAGE_TSPC :
if(!vflag)
printf(" tspc");
else {
printf("\n\tTS/PC ");
if(len < 6) goto corrupt;
printf("timestamp %u packetcounter %u", EXTRACT_32BITS (message + 4),
EXTRACT_16BITS(message + 2));
}
break;
case MESSAGE_HMAC : {
if(!vflag)
printf(" hmac");
else {
unsigned j;
printf("\n\tHMAC ");
if(len < 18) goto corrupt;
printf("key-id %u digest-%u ", EXTRACT_16BITS(message + 2), len - 2);
for (j = 0; j < len - 2; j++)
printf ("%02X", message[4 + j]);
}
}
break;
default:
if(!vflag)
printf(" unknown");

View File

@ -1531,8 +1531,12 @@ bgp_attr_print(u_int atype, const u_char *pptr, u_int len)
tptr++;
if (tlen) {
int nnh = 0;
printf("\n\t nexthop: ");
while (tlen > 0) {
if ( nnh++ > 0 ) {
printf( ", " );
}
switch(af<<8 | safi) {
case (AFNUM_INET<<8 | SAFNUM_UNICAST):
case (AFNUM_INET<<8 | SAFNUM_MULTICAST):

View File

@ -29,13 +29,14 @@
/*
* RFC3315: DHCPv6
* supported DHCPv6 options:
* RFC3319,
* RFC3633,
* RFC3646,
* RFC3898,
* RFC4075,
* RFC4242,
* RFC4280,
* RFC3319: Session Initiation Protocol (SIP) Servers options,
* RFC3633: IPv6 Prefix options,
* RFC3646: DNS Configuration options,
* RFC3898: Network Information Service (NIS) Configuration options,
* RFC4075: Simple Network Time Protocol (SNTP) Configuration option,
* RFC4242: Information Refresh Time option,
* RFC4280: Broadcast and Multicast Control Servers options,
* RFC6334: Dual-Stack Lite option,
*/
#ifndef lint
@ -170,6 +171,7 @@ struct dhcp6_relay {
#define DH6OPT_CLT_TIME 46
#define DH6OPT_LQ_RELAY_DATA 47
#define DH6OPT_LQ_CLIENT_LINK 48
#define DH6OPT_AFTR_NAME 64
struct dhcp6opt {
u_int16_t dh6opt_type;
@ -278,6 +280,8 @@ dhcp6opt_name(int type)
return "LQ-relay-data";
case DH6OPT_LQ_CLIENT_LINK:
return "LQ-client-link";
case DH6OPT_AFTR_NAME:
return "AFTR-Name";
default:
snprintf(genstr, sizeof(genstr), "opt_%d", type);
return(genstr);
@ -338,6 +342,7 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
if (ep < cp + sizeof(*dh6o))
goto trunc;
dh6o = (struct dhcp6opt *)cp;
TCHECK(*dh6o);
optlen = EXTRACT_16BITS(&dh6o->dh6opt_len);
if (ep < cp + sizeof(*dh6o) + optlen)
goto trunc;
@ -410,7 +415,7 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
EXTRACT_32BITS(&tp[20]));
if (optlen > 24) {
/* there are sub-options */
dhcp6opt_print(tp + 24, tp + 24 + optlen);
dhcp6opt_print(tp + 24, tp + optlen);
}
printf(")");
break;
@ -610,7 +615,7 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
EXTRACT_32BITS(&tp[8]));
if (optlen > 12) {
/* there are sub-options */
dhcp6opt_print(tp + 12, tp + 12 + optlen);
dhcp6opt_print(tp + 12, tp + optlen);
}
printf(")");
break;
@ -623,7 +628,7 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
printf(" IAID:%u", EXTRACT_32BITS(tp));
if (optlen > 4) {
/* there are sub-options */
dhcp6opt_print(tp + 4, tp + 4 + optlen);
dhcp6opt_print(tp + 4, tp + optlen);
}
printf(")");
break;
@ -639,7 +644,7 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
EXTRACT_32BITS(&tp[4]));
if (optlen > 25) {
/* there are sub-options */
dhcp6opt_print(tp + 25, tp + 25 + optlen);
dhcp6opt_print(tp + 25, tp + optlen);
}
printf(")");
break;
@ -712,6 +717,30 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
printf("%02x", tp[i]);
printf("...)");
break;
case DH6OPT_AFTR_NAME:
if (optlen < 3) {
printf(" ?)");
break;
}
tp = (u_char *)(dh6o + 1);
int remain_len = optlen;
printf(" ");
/* Encoding is described in section 3.1 of RFC 1035 */
int label_len; /* Label length */
while (remain_len && *tp) {
label_len = *tp++;
if (label_len < remain_len - 1) {
printf("%.*s", label_len, tp);
tp += label_len;
remain_len -= (label_len + 1);
if(*tp) printf(".");
} else {
printf(" ?");
break;
}
}
printf(")");
break;
default:
printf(")");
break;

View File

@ -144,7 +144,7 @@ labellen(const u_char *cp)
return(i);
}
static const u_char *
const u_char *
ns_nprint(register const u_char *cp, register const u_char *bp)
{
register u_int i, l;

View File

@ -76,6 +76,7 @@ const struct tok ethertype_values[] = {
{ ETHERTYPE_PPPOES, "PPPoE S" },
{ ETHERTYPE_EAPOL, "EAPOL" },
{ ETHERTYPE_RRCP, "RRCP" },
{ ETHERTYPE_MS_NLB_HB, "MS NLB heartbeat" },
{ ETHERTYPE_JUMBO, "Jumbo" },
{ ETHERTYPE_LOOPBACK, "Loopback" },
{ ETHERTYPE_ISO, "OSI" },
@ -412,6 +413,10 @@ ethertype_print(netdissect_options *ndo,
tipc_print(ndo, p, length, caplen);
return (1);
case ETHERTYPE_MS_NLB_HB:
msnlb_print(ndo, p, length);
return (1);
case ETHERTYPE_LAT:
case ETHERTYPE_SCA:
case ETHERTYPE_MOPRC:

View File

@ -136,6 +136,7 @@ static struct tok icmp6_opt_values[] = {
{ ND_OPT_REDIRECTED_HEADER, "redirected header"},
{ ND_OPT_MTU, "mtu"},
{ ND_OPT_RDNSS, "rdnss"},
{ ND_OPT_DNSSL, "dnssl"},
{ ND_OPT_ADVINTERVAL, "advertisement interval"},
{ ND_OPT_HOMEAGENT_INFO, "homeagent information"},
{ ND_OPT_ROUTE_INFO, "route info"},
@ -174,7 +175,7 @@ get_lifetime(u_int32_t v)
if (v == (u_int32_t)~0UL)
return "infinity";
else {
snprintf(buf, sizeof(buf), "%u", v);
snprintf(buf, sizeof(buf), "%us", v);
return buf;
}
}
@ -439,7 +440,7 @@ icmp6_print(netdissect_options *ndo,
if (length == MLD_MINLEN) {
mld6_print((const u_char *)dp);
} else if (length >= MLDV2_MINLEN) {
printf("v2 ");
printf(" v2");
mldv2_query_print((const u_char *)dp, length);
} else {
printf(" unknown-version (len %u) ", length);
@ -673,10 +674,11 @@ icmp6_opt_print(const u_char *bp, int resid)
const struct icmp6_opts_redirect *opr;
const struct nd_opt_mtu *opm;
const struct nd_opt_rdnss *oprd;
const struct nd_opt_dnssl *opds;
const struct nd_opt_advinterval *opa;
const struct nd_opt_homeagent_info *oph;
const struct nd_opt_route_info *opri;
const u_char *cp, *ep;
const u_char *cp, *ep, *domp;
struct in6_addr in6, *in6p;
size_t l;
u_int i;
@ -718,13 +720,13 @@ icmp6_opt_print(const u_char *bp, int resid)
case ND_OPT_PREFIX_INFORMATION:
opp = (struct nd_opt_prefix_info *)op;
TCHECK(opp->nd_opt_pi_prefix);
printf("%s/%u%s, Flags [%s], valid time %ss",
printf("%s/%u%s, Flags [%s], valid time %s",
ip6addr_string(&opp->nd_opt_pi_prefix),
opp->nd_opt_pi_prefix_len,
(op->nd_opt_len != 4) ? "badlen" : "",
bittok2str(icmp6_opt_pi_flag_values, "none", opp->nd_opt_pi_flags_reserved),
get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_valid_time)));
printf(", pref. time %ss", get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_preferred_time)));
printf(", pref. time %s", get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_preferred_time)));
break;
case ND_OPT_REDIRECTED_HEADER:
opr = (struct icmp6_opts_redirect *)op;
@ -749,6 +751,18 @@ icmp6_opt_print(const u_char *bp, int resid)
ip6addr_string(&oprd->nd_opt_rdnss_addr[i]));
}
break;
case ND_OPT_DNSSL:
opds = (struct nd_opt_dnssl *)op;
printf(" lifetime %us, domain(s):",
EXTRACT_32BITS(&opds->nd_opt_dnssl_lifetime));
domp = cp + 8; /* domain names, variable-sized, RFC1035-encoded */
while (domp < cp + (op->nd_opt_len << 3) && *domp != '\0')
{
printf (" ");
if ((domp = ns_nprint (domp, bp)) == NULL)
goto trunc;
}
break;
case ND_OPT_ADVINTERVAL:
opa = (struct nd_opt_advinterval *)op;
TCHECK(opa->nd_opt_adv_interval);

View File

@ -126,6 +126,8 @@ static struct tok isis_pdu_values[] = {
#define ISIS_TLV_EXTD_IP_REACH 135 /* draft-ietf-isis-traffic-05 */
#define ISIS_TLV_HOSTNAME 137 /* rfc2763 */
#define ISIS_TLV_SHARED_RISK_GROUP 138 /* draft-ietf-isis-gmpls-extensions */
#define ISIS_TLV_MT_PORT_CAP 143 /* rfc6165 */
#define ISIS_TLV_MT_CAPABILITY 144 /* rfc6329 */
#define ISIS_TLV_NORTEL_PRIVATE1 176
#define ISIS_TLV_NORTEL_PRIVATE2 177
#define ISIS_TLV_RESTART_SIGNALING 211 /* rfc3847 */
@ -170,6 +172,8 @@ static struct tok isis_tlv_values[] = {
{ ISIS_TLV_TE_ROUTER_ID, "Traffic Engineering Router ID"},
{ ISIS_TLV_EXTD_IP_REACH, "Extended IPv4 Reachability"},
{ ISIS_TLV_SHARED_RISK_GROUP, "Shared Risk Link Group"},
{ ISIS_TLV_MT_PORT_CAP, "Multi-Topology-Aware Port Capability"},
{ ISIS_TLV_MT_CAPABILITY, "Multi-Topology Capability"},
{ ISIS_TLV_NORTEL_PRIVATE1, "Nortel Proprietary"},
{ ISIS_TLV_NORTEL_PRIVATE2, "Nortel Proprietary"},
{ ISIS_TLV_HOSTNAME, "Hostname"},
@ -350,6 +354,8 @@ static struct tok clnp_option_qos_global_values[] = {
#define ISIS_SUBTLV_EXT_IS_REACH_INTF_SW_CAP_DESCR 21 /* rfc4205 */
#define ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS 22 /* rfc4124 */
#define ISIS_SUBTLV_SPB_METRIC 29 /* rfc6329 */
static struct tok isis_ext_is_reach_subtlv_values[] = {
{ ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP, "Administrative groups" },
{ ISIS_SUBTLV_EXT_IS_REACH_LINK_LOCAL_REMOTE_ID, "Link Local/Remote Identifier" },
@ -365,6 +371,7 @@ static struct tok isis_ext_is_reach_subtlv_values[] = {
{ ISIS_SUBTLV_EXT_IS_REACH_INTF_SW_CAP_DESCR, "Interface Switching Capability" },
{ ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS_OLD, "Bandwidth Constraints (old)" },
{ ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS, "Bandwidth Constraints" },
{ ISIS_SUBTLV_SPB_METRIC, "SPB Metric" },
{ 250, "Reserved for cisco specific extensions" },
{ 251, "Reserved for cisco specific extensions" },
{ 252, "Reserved for cisco specific extensions" },
@ -417,6 +424,53 @@ static struct tok isis_subtlv_idrp_values[] = {
{ 0, NULL}
};
#define ISIS_SUBTLV_SPB_MCID 4
#define ISIS_SUBTLV_SPB_DIGEST 5
#define ISIS_SUBTLV_SPB_BVID 6
#define ISIS_SUBTLV_SPB_INSTANCE 1
#define ISIS_SUBTLV_SPBM_SI 3
#define ISIS_SPB_MCID_LEN 51
#define ISIS_SUBTLV_SPB_MCID_MIN_LEN 102
#define ISIS_SUBTLV_SPB_DIGEST_MIN_LEN 33
#define ISIS_SUBTLV_SPB_BVID_MIN_LEN 6
#define ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN 19
#define ISIS_SUBTLV_SPB_INSTANCE_VLAN_TUPLE_LEN 8
static struct tok isis_mt_port_cap_subtlv_values[] = {
{ ISIS_SUBTLV_SPB_MCID, "SPB MCID" },
{ ISIS_SUBTLV_SPB_DIGEST, "SPB Digest" },
{ ISIS_SUBTLV_SPB_BVID, "SPB BVID" },
{ 0, NULL }
};
static struct tok isis_mt_capability_subtlv_values[] = {
{ ISIS_SUBTLV_SPB_INSTANCE, "SPB Instance" },
{ ISIS_SUBTLV_SPBM_SI, "SPBM Service Identifier and Unicast Address" },
{ 0, NULL }
};
struct isis_spb_mcid {
u_int8_t format_id;
u_int8_t name[32];
u_int8_t revision_lvl[2];
u_int8_t digest[16];
};
struct isis_subtlv_spb_mcid {
struct isis_spb_mcid mcid;
struct isis_spb_mcid aux_mcid;
};
struct isis_subtlv_spb_instance {
u_int8_t cist_root_id[8];
u_int8_t cist_external_root_path_cost[4];
u_int8_t bridge_priority[2];
u_int8_t spsourceid[4];
u_int8_t no_of_trees;
};
#define CLNP_SEGMENT_PART 0x80
#define CLNP_MORE_SEGMENTS 0x40
#define CLNP_REQUEST_ER 0x20
@ -1247,6 +1301,258 @@ esis_print(const u_int8_t *pptr, u_int length)
return;
}
static void
isis_print_mcid (const struct isis_spb_mcid *mcid)
{
int i;
printf( "ID: %d, Name: ", mcid->format_id);
for(i=0; i<32; i++)
{
printf("%c", mcid->name[i]);
if(mcid->name[i] == '\0')
break;
}
printf("\n\t Lvl: %d",
EXTRACT_16BITS(mcid->revision_lvl));
printf( ", Digest: ");
for(i=0;i<16;i++)
printf("%.2x ",mcid->digest[i]);
}
static int
isis_print_mt_port_cap_subtlv (const u_int8_t *tptr, int len)
{
int stlv_type, stlv_len;
const struct isis_subtlv_spb_mcid *subtlv_spb_mcid;
int i;
while (len > 0)
{
stlv_type = *(tptr++);
stlv_len = *(tptr++);
/* first lets see if we know the subTLVs name*/
printf("\n\t %s subTLV #%u, length: %u",
tok2str(isis_mt_port_cap_subtlv_values, "unknown", stlv_type),
stlv_type,
stlv_len);
/*len -= TLV_TYPE_LEN_OFFSET;*/
len = len -2;
switch (stlv_type)
{
case ISIS_SUBTLV_SPB_MCID:
{
if (!TTEST2(*(tptr), ISIS_SUBTLV_SPB_MCID_MIN_LEN))
goto trunctlv;
subtlv_spb_mcid = (struct isis_subtlv_spb_mcid *)tptr;
printf( "\n\t MCID: ");
isis_print_mcid (&(subtlv_spb_mcid->mcid));
/*tptr += SPB_MCID_MIN_LEN;
len -= SPB_MCID_MIN_LEN; */
printf( "\n\t AUX-MCID: ");
isis_print_mcid (&(subtlv_spb_mcid->aux_mcid));
/*tptr += SPB_MCID_MIN_LEN;
len -= SPB_MCID_MIN_LEN; */
tptr = tptr + sizeof(struct isis_subtlv_spb_mcid);
len = len - sizeof(struct isis_subtlv_spb_mcid);
break;
}
case ISIS_SUBTLV_SPB_DIGEST:
{
if (!TTEST2(*(tptr), ISIS_SUBTLV_SPB_DIGEST_MIN_LEN))
goto trunctlv;
printf ("\n\t RES: %d V: %d A: %d D: %d",
(*(tptr) >> 5), (((*tptr)>> 4) & 0x01),
((*(tptr) >> 2) & 0x03), ((*tptr) & 0x03));
tptr++;
printf( "\n\t Digest: ");
for(i=1;i<=8; i++)
{
printf("%08x ", EXTRACT_32BITS(tptr));
if (i%4 == 0 && i != 8)
printf("\n\t ");
tptr = tptr + 4;
}
len = len - ISIS_SUBTLV_SPB_DIGEST_MIN_LEN;
break;
}
case ISIS_SUBTLV_SPB_BVID:
{
if (!TTEST2(*(tptr), stlv_len))
goto trunctlv;
while (len)
{
if (!TTEST2(*(tptr), ISIS_SUBTLV_SPB_BVID_MIN_LEN))
goto trunctlv;
printf("\n\t ECT: %08x",
EXTRACT_32BITS(tptr));
tptr = tptr+4;
printf(" BVID: %d, U:%01x M:%01x ",
(EXTRACT_16BITS (tptr) >> 4) ,
(EXTRACT_16BITS (tptr) >> 3) & 0x01,
(EXTRACT_16BITS (tptr) >> 2) & 0x01);
tptr = tptr + 2;
len = len - ISIS_SUBTLV_SPB_BVID_MIN_LEN;
}
break;
}
default:
break;
}
}
return 0;
trunctlv:
printf("\n\t\t packet exceeded snapshot");
return(1);
}
static int
isis_print_mt_capability_subtlv (const u_int8_t *tptr, int len)
{
int stlv_type, stlv_len, tmp;
while (len > 0)
{
stlv_type = *(tptr++);
stlv_len = *(tptr++);
/* first lets see if we know the subTLVs name*/
printf("\n\t %s subTLV #%u, length: %u",
tok2str(isis_mt_capability_subtlv_values, "unknown", stlv_type),
stlv_type,
stlv_len);
len = len - 2;
switch (stlv_type)
{
case ISIS_SUBTLV_SPB_INSTANCE:
if (!TTEST2(*(tptr), ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN))
goto trunctlv;
printf("\n\t CIST Root-ID: %08x", EXTRACT_32BITS(tptr));
tptr = tptr+4;
printf(" %08x", EXTRACT_32BITS(tptr));
tptr = tptr+4;
printf(", Path Cost: %08x", EXTRACT_32BITS(tptr));
tptr = tptr+4;
printf(", Prio: %d", EXTRACT_16BITS(tptr));
tptr = tptr + 2;
printf("\n\t RES: %d",
EXTRACT_16BITS(tptr) >> 5);
printf(", V: %d",
(EXTRACT_16BITS(tptr) >> 4) & 0x0001);
printf(", SPSource-ID: %d",
(EXTRACT_32BITS(tptr) & 0x000fffff));
tptr = tptr+4;
printf(", No of Trees: %x", *(tptr));
tmp = *(tptr++);
len = len - ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN;
while (tmp)
{
if (!TTEST2(*(tptr), ISIS_SUBTLV_SPB_INSTANCE_VLAN_TUPLE_LEN))
goto trunctlv;
printf ("\n\t U:%d, M:%d, A:%d, RES:%d",
*(tptr) >> 7, (*(tptr) >> 6) & 0x01,
(*(tptr) >> 5) & 0x01, (*(tptr) & 0x1f));
tptr++;
printf (", ECT: %08x", EXTRACT_32BITS(tptr));
tptr = tptr + 4;
printf (", BVID: %d, SPVID: %d",
(EXTRACT_24BITS(tptr) >> 12) & 0x000fff,
EXTRACT_24BITS(tptr) & 0x000fff);
tptr = tptr + 3;
len = len - ISIS_SUBTLV_SPB_INSTANCE_VLAN_TUPLE_LEN;
tmp--;
}
break;
case ISIS_SUBTLV_SPBM_SI:
if (!TTEST2(*(tptr), 6))
goto trunctlv;
printf("\n\t BMAC: %08x", EXTRACT_32BITS(tptr));
tptr = tptr+4;
printf("%04x", EXTRACT_16BITS(tptr));
tptr = tptr+2;
printf (", RES: %d, VID: %d", EXTRACT_16BITS(tptr) >> 12,
(EXTRACT_16BITS(tptr)) & 0x0fff);
tptr = tptr+2;
len = len - 8;
stlv_len = stlv_len - 8;
while (stlv_len)
{
printf("\n\t T: %d, R: %d, RES: %d, ISID: %d",
(EXTRACT_32BITS(tptr) >> 31),
(EXTRACT_32BITS(tptr) >> 30) & 0x01,
(EXTRACT_32BITS(tptr) >> 24) & 0x03f,
(EXTRACT_32BITS(tptr)) & 0x0ffffff);
tptr = tptr + 4;
len = len - 4;
stlv_len = stlv_len - 4;
}
break;
default:
break;
}
}
return 0;
trunctlv:
printf("\n\t\t packet exceeded snapshot");
return(1);
}
/* shared routine for printing system, node and lsp-ids */
static char *
isis_print_id(const u_int8_t *cp, int id_len)
@ -1504,6 +1810,14 @@ isis_print_is_reach_subtlv (const u_int8_t *tptr,u_int subt,u_int subl,const cha
*(tptr+1));
}
break;
case ISIS_SUBTLV_SPB_METRIC:
if (subl >= 6) {
printf (", LM: %u", EXTRACT_24BITS(tptr));
tptr=tptr+3;
printf (", P: %u", *(tptr));
printf (", P-ID: %u", EXTRACT_16BITS(++tptr));
}
break;
case ISIS_SUBTLV_EXT_IS_REACH_INTF_SW_CAP_DESCR:
if (subl >= 36) {
gmpls_switch_cap = *tptr;
@ -2445,6 +2759,42 @@ static int isis_print (const u_int8_t *p, u_int length)
}
break;
case ISIS_TLV_MT_PORT_CAP:
{
if (!TTEST2(*(tptr), 2))
goto trunctlv;
printf("\n\t RES: %d, MTID(s): %d",
(EXTRACT_16BITS (tptr) >> 12),
(EXTRACT_16BITS (tptr) & 0x0fff));
tmp = tmp-2;
tptr = tptr+2;
if (tmp)
isis_print_mt_port_cap_subtlv (tptr, tmp);
break;
}
case ISIS_TLV_MT_CAPABILITY:
if (!TTEST2(*(tptr), 2))
goto trunctlv;
printf("\n\t O: %d, RES: %d, MTID(s): %d",
(EXTRACT_16BITS(tptr) >> 15) & 0x01,
(EXTRACT_16BITS(tptr) >> 12) & 0x07,
EXTRACT_16BITS(tptr) & 0x0fff);
tmp = tmp-2;
tptr = tptr+2;
if (tmp)
isis_print_mt_capability_subtlv (tptr, tmp);
break;
case ISIS_TLV_TE_ROUTER_ID:
if (!TTEST2(*pptr, sizeof(struct in_addr)))
goto trunctlv;

View File

@ -1184,9 +1184,7 @@ lldp_print(register const u_char *pptr, register u_int len) {
tptr = pptr;
tlen = len;
if (vflag) {
printf("LLDP, length %u", len);
}
printf("LLDP, length %u", len);
while (tlen >= sizeof(tlv)) {
@ -1322,14 +1320,8 @@ lldp_print(register const u_char *pptr, register u_int len) {
* The system name is also print in non-verbose mode
* similar to the CDP printer.
*/
if (vflag) {
printf(": ");
safeputs((const char *)tptr, tlv_len);
} else {
printf("LLDP, name ");
safeputs((const char *)tptr, tlv_len);
printf(", length %u", len);
}
printf(": ");
safeputs((const char *)tptr, tlv_len);
break;
case LLDP_SYSTEM_DESCR_TLV:

66
print-msnlb.c Normal file
View File

@ -0,0 +1,66 @@
/*
* Copyright (c) 2013 Romain Francoise <romain@orebokech.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tcpdump-stdinc.h>
#include <stdio.h>
#include <string.h>
#include "netdissect.h"
#include "addrtoname.h"
#include "extract.h"
struct msnlb_heartbeat_pkt {
u_int32_t unknown1;
u_int32_t unknown2;
u_int32_t host_prio; /* little-endian */
u_int32_t virtual_ip;
u_int32_t host_ip;
/* the protocol is undocumented so we ignore the rest */
};
void
msnlb_print(netdissect_options *ndo, const u_char *bp, u_int length)
{
const struct msnlb_heartbeat_pkt *hb;
hb = (struct msnlb_heartbeat_pkt *)bp;
ND_TCHECK(*hb);
ND_PRINT((ndo, "MS NLB heartbeat, host priority: %u,",
EXTRACT_LE_32BITS(&(hb->host_prio))));
ND_PRINT((ndo, " cluster IP: %s,", ipaddr_string(&(hb->virtual_ip))));
ND_PRINT((ndo, " host IP: %s", ipaddr_string(&(hb->host_ip))));
return;
trunc:
ND_PRINT((ndo, "[|MS NLB]"));
}

View File

@ -117,7 +117,7 @@ ntp_print(register const u_char *cp, u_int length)
tok2str(ntp_stratum_values, (bp->stratum >=2 && bp->stratum<=15) ? "secondary reference" : "reserved", bp->stratum));
TCHECK(bp->ppoll);
printf(", poll %us", bp->ppoll);
printf(", poll %u (%us)", bp->ppoll, 1 << bp->ppoll);
/* Can't TCHECK bp->precision bitfield so bp->distance + 0 instead */
TCHECK2(bp->root_delay, 0);

79
print-otv.c Normal file
View File

@ -0,0 +1,79 @@
/*
* 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.
* 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.
*
* Original code by Francesco Fondelli (francesco dot fondelli, gmail dot com)
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tcpdump-stdinc.h>
#include <stdio.h>
#include <stdlib.h>
#include "interface.h"
#include "extract.h"
#include "addrtoname.h"
#include "udp.h"
/*
* OTV header, draft-hasmit-otv-04
*
* 0 1 2 3
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |R|R|R|R|I|R|R|R| Overlay ID |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Instance ID | Reserved |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
void
otv_print(const u_char *bp, u_int len, u_int port)
{
u_int8_t flags;
u_int32_t overlay_id;
u_int32_t instance_id;
if (len < 8) {
printf("[|OTV]");
return;
}
flags = *bp;
bp += 1;
overlay_id = EXTRACT_24BITS(bp);
bp += 3;
instance_id = EXTRACT_24BITS(bp);
bp += 4;
printf("OTV, ");
fputs("flags [", stdout);
if (flags & 0x08)
fputs("I", stdout);
else
fputs(".", stdout);
fputs("] ", stdout);
printf("(0x%02x), ", flags);
printf("overlay %u, ", overlay_id);
printf("instance %u\n", instance_id);
ether_print(gndo, bp, len - 8, len - 8, NULL, NULL);
return;
}

View File

@ -159,7 +159,7 @@ pppoe_print(register const u_char *bp, u_int length)
if (tag_len) {
unsigned isascii = 0, isgarbage = 0;
const u_char *v = p;
const u_char *v;
char tag_str[MAXTAGPRINT];
unsigned tag_str_len = 0;

View File

@ -102,7 +102,7 @@ rip_entry_print_v1(register const struct rip_netinfo *ni)
/* RFC 1058 */
family = EXTRACT_16BITS(&ni->rip_family);
if (family != BSD_AFNUM_INET) {
if (family != BSD_AFNUM_INET && family != 0) {
printf("\n\t AFI %s, ", tok2str(bsd_af_values, "Unknown (%u)", family));
print_unknown_data((u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN);
return;
@ -113,41 +113,55 @@ rip_entry_print_v1(register const struct rip_netinfo *ni)
/* MBZ fields not zero */
print_unknown_data((u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN);
return;
}
if (family == 0) {
printf("\n\t AFI 0, %s, metric: %u",
ipaddr_string(&ni->rip_dest),
EXTRACT_32BITS(&ni->rip_metric));
return;
} /* BSD_AFNUM_INET */
printf("\n\t %s, metric: %u",
ipaddr_string(&ni->rip_dest),
EXTRACT_32BITS(&ni->rip_metric));
}
static void
rip_entry_print_v2(register const struct rip_netinfo *ni)
static unsigned
rip_entry_print_v2(register const struct rip_netinfo *ni, const unsigned remaining)
{
register u_char *p;
register u_short family;
u_char buf[RIP_AUTHLEN];
family = EXTRACT_16BITS(&ni->rip_family);
if (family == 0xFFFF) { /* 16 bytes authentication ? */
if (EXTRACT_16BITS(&ni->rip_tag) == 2) { /* simple text authentication ? */
memcpy(buf, &ni->rip_dest, sizeof(buf));
buf[sizeof(buf)-1] = '\0';
for (p = buf; *p; p++) {
if (!isprint(*p))
break;
}
printf("\n\t Simple Text Authentication data: %s", buf);
if (family == 0xFFFF) { /* variable-sized authentication structures */
u_int16_t auth_type = EXTRACT_16BITS(&ni->rip_tag);
if (auth_type == 2) {
register u_char *p = (u_char *)&ni->rip_dest;
u_int i = 0;
printf("\n\t Simple Text Authentication data: ");
for (; i < RIP_AUTHLEN; p++, i++)
putchar (isprint(*p) ? *p : '.');
} else if (auth_type == 3) {
printf("\n\t Auth header:");
printf(" Packet Len %u,", EXTRACT_16BITS(&ni->rip_dest));
printf(" Key-ID %u,", *((u_int8_t *)ni + 6));
printf(" Auth Data Len %u,", *((u_int8_t *)ni + 7));
printf(" SeqNo %u,", EXTRACT_32BITS(&ni->rip_dest_mask));
printf(" MBZ %u,", EXTRACT_32BITS(&ni->rip_router));
printf(" MBZ %u", EXTRACT_32BITS(&ni->rip_metric));
} else if (auth_type == 1) {
printf("\n\t Auth trailer:");
print_unknown_data((u_int8_t *)&ni->rip_dest,"\n\t ",remaining);
return remaining; /* AT spans till the packet end */
} else {
printf("\n\t Unknown (%u) Authentication data:",
EXTRACT_16BITS(&ni->rip_tag));
print_unknown_data((u_int8_t *)&ni->rip_dest,"\n\t ",RIP_AUTHLEN);
print_unknown_data((u_int8_t *)&ni->rip_dest,"\n\t ",remaining);
}
} else if (family != BSD_AFNUM_INET) {
} else if (family != BSD_AFNUM_INET && family != 0) {
printf("\n\t AFI %s", tok2str(bsd_af_values, "Unknown (%u)", family));
print_unknown_data((u_int8_t *)&ni->rip_tag,"\n\t ",RIP_ROUTELEN-2);
return;
} else { /* BSD_AFNUM_INET */
} else { /* BSD_AFNUM_INET or AFI 0 */
printf("\n\t AFI %s, %15s/%-2d, tag 0x%04x, metric: %u, next-hop: ",
tok2str(bsd_af_values, "Unknown (%u)", family),
tok2str(bsd_af_values, "%u", family),
ipaddr_string(&ni->rip_dest),
mask2plen(EXTRACT_32BITS(&ni->rip_dest_mask)),
EXTRACT_16BITS(&ni->rip_tag),
@ -157,6 +171,7 @@ rip_entry_print_v2(register const struct rip_netinfo *ni)
else
printf("self");
}
return sizeof (*ni);
}
void
@ -165,7 +180,6 @@ rip_print(const u_char *dat, u_int length)
register const struct rip *rp;
register const struct rip_netinfo *ni;
register u_int i, j;
register int trunc;
if (snapend < dat) {
printf(" [|rip]");
@ -213,25 +227,26 @@ rip_print(const u_char *dat, u_int length)
return;
switch (rp->rip_cmd) {
case RIPCMD_REQUEST:
case RIPCMD_RESPONSE:
j = length / sizeof(*ni);
printf(", routes: %u",j);
trunc = (i / sizeof(*ni)) != j;
printf(", routes: %u%s", j, rp->rip_vers == 2 ? " or less" : "");
ni = (struct rip_netinfo *)(rp + 1);
for (; i >= sizeof(*ni); ++ni) {
if (rp->rip_vers == 1)
{
rip_entry_print_v1(ni);
i -= sizeof(*ni);
}
else if (rp->rip_vers == 2)
rip_entry_print_v2(ni);
i -= rip_entry_print_v2(ni, i);
else
break;
i -= sizeof(*ni);
}
if (trunc)
if (i)
printf("[|rip]");
break;
case RIPCMD_REQUEST:
case RIPCMD_TRACEOFF:
case RIPCMD_POLL:
case RIPCMD_POLLENTRY:

View File

@ -12,7 +12,7 @@
* LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* support for the The RPKI/Router Protocol Protocol as per draft-ietf-sidr-rpki-rtr-12
* support for the The RPKI/Router Protocol as RFC6810
*
* Original code by Hannes Gredler (hannes@juniper.net)
*/
@ -46,7 +46,7 @@ typedef struct rpki_rtr_pdu_ {
u_char version; /* Version number */
u_char pdu_type; /* PDU type */
union {
u_char cache_nonce[2]; /* Cache Nonce */
u_char session_id[2]; /* Session id */
u_char error_code[2]; /* Error code */
} u;
u_char length[4];
@ -167,7 +167,7 @@ indent_string (u_int indent)
* Trailing zero.
*/
buf[idx] = '\0';
return buf;
}
@ -201,9 +201,9 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent)
case RPKI_RTR_SERIAL_QUERY_PDU:
case RPKI_RTR_END_OF_DATA_PDU:
msg = (const u_char *)(pdu_header + 1);
printf("%sCache-Nonce: 0x%04x, Serial: %u",
printf("%sSession ID: 0x%04x, Serial: %u",
indent_string(indent+2),
EXTRACT_16BITS(pdu_header->u.cache_nonce),
EXTRACT_16BITS(pdu_header->u.session_id),
EXTRACT_32BITS(msg));
break;
@ -219,9 +219,9 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent)
break;
case RPKI_RTR_CACHE_RESPONSE_PDU:
printf("%sCache-Nonce: 0x%04x",
printf("%sSession ID: 0x%04x",
indent_string(indent+2),
EXTRACT_16BITS(pdu_header->u.cache_nonce));
EXTRACT_16BITS(pdu_header->u.session_id));
break;
case RPKI_RTR_IPV4_PREFIX_PDU:
@ -320,7 +320,7 @@ rpki_rtr_print(register const u_char *pptr, register u_int len) {
u_int tlen, pdu_type, pdu_len;
const u_char *tptr;
const rpki_rtr_pdu *pdu_header;
tptr = pptr;
tlen = len;

View File

@ -52,11 +52,13 @@ struct stp_bpdu_ {
#define STP_PROTO_REGULAR 0x00
#define STP_PROTO_RAPID 0x02
#define STP_PROTO_MSTP 0x03
#define STP_PROTO_SPB 0x04
struct tok stp_proto_values[] = {
{ STP_PROTO_REGULAR, "802.1d" },
{ STP_PROTO_RAPID, "802.1w" },
{ STP_PROTO_MSTP, "802.1s" },
{ STP_PROTO_SPB, "802.1aq" },
{ 0, NULL}
};
@ -164,6 +166,30 @@ stp_print_config_bpdu(const struct stp_bpdu_ *stp_bpdu, u_int length)
* 1 - byte CIST Remaining Hops
* 16 - bytes MSTI information [Max 64 MSTI, each 16 bytes]
*
*
* SPB BPDU
* Ref. IEEE 802.1aq. Section 14
*
* 2 - bytes Version 4 length
* 1 - byte Aux Config Identifier
* 32 - bytes Aux Config Name
* 2 - bytes Aux Revision level
* 16 - bytes Aux Config Digest [MD5]
* 1 - byte (1 - 2) Agreement Number
* (3 - 4) Discarded Agreement Number
* (5) Agreement Valid Flag
* (6) Restricted Role Flag
* (7 - 8) Unused sent zero
* 1 - byte Unused
* 1 - byte (1 - 4) Agreement Digest Format Identifier
* (5 - 8) Agreement Digest Format Capabilities
* 1 - byte (1 - 4) Agreement Digest Convention Identifier
* (5 - 8) Agreement Digest Convention Capabilities
* 2 - bytes Agreement Digest Edge Count
* 8 - byte Reserved Set
* 20 - bytes Computed Topology Digest
*
*
* MSTI Payload
*
* 1 - byte MSTI flag
@ -172,6 +198,7 @@ stp_print_config_bpdu(const struct stp_bpdu_ *stp_bpdu, u_int length)
* 1 - byte MSTI Bridge Priority
* 1 - byte MSTI Port Priority
* 1 - byte MSTI Remaining Hops
*
*/
#define MST_BPDU_MSTI_LENGTH 16
@ -192,18 +219,32 @@ stp_print_config_bpdu(const struct stp_bpdu_ *stp_bpdu, u_int length)
#define MST_BPDU_MSTI_PORT_PRIO_OFFSET 14
#define MST_BPDU_MSTI_REMAIN_HOPS_OFFSET 15
#define SPB_BPDU_MIN_LEN 87
#define SPB_BPDU_CONFIG_NAME_OFFSET 3
#define SPB_BPDU_CONFIG_REV_OFFSET SPB_BPDU_CONFIG_NAME_OFFSET + 32
#define SPB_BPDU_CONFIG_DIGEST_OFFSET SPB_BPDU_CONFIG_REV_OFFSET + 2
#define SPB_BPDU_AGREEMENT_OFFSET SPB_BPDU_CONFIG_DIGEST_OFFSET + 16
#define SPB_BPDU_AGREEMENT_UNUSED_OFFSET SPB_BPDU_AGREEMENT_OFFSET + 1
#define SPB_BPDU_AGREEMENT_FORMAT_OFFSET SPB_BPDU_AGREEMENT_UNUSED_OFFSET + 1
#define SPB_BPDU_AGREEMENT_CON_OFFSET SPB_BPDU_AGREEMENT_FORMAT_OFFSET + 1
#define SPB_BPDU_AGREEMENT_EDGE_OFFSET SPB_BPDU_AGREEMENT_CON_OFFSET + 1
#define SPB_BPDU_AGREEMENT_RES1_OFFSET SPB_BPDU_AGREEMENT_EDGE_OFFSET + 2
#define SPB_BPDU_AGREEMENT_RES2_OFFSET SPB_BPDU_AGREEMENT_RES1_OFFSET + 4
#define SPB_BPDU_AGREEMENT_DIGEST_OFFSET SPB_BPDU_AGREEMENT_RES2_OFFSET + 4
static void
stp_print_mstp_bpdu(const struct stp_bpdu_ *stp_bpdu, u_int length)
{
const u_char *ptr;
const u_char *ptr;
u_int16_t v3len;
u_int16_t len;
u_int16_t msti;
u_int16_t offset;
ptr = (const u_char *)stp_bpdu;
printf(", CIST Flags [%s]",
bittok2str(stp_bpdu_flag_values, "none", stp_bpdu->flags));
printf(", CIST Flags [%s], length %u",
bittok2str(stp_bpdu_flag_values, "none", stp_bpdu->flags), length);
/*
* in non-verbose mode just print the flags. We dont read that much
@ -213,10 +254,18 @@ stp_print_mstp_bpdu(const struct stp_bpdu_ *stp_bpdu, u_int length)
return;
}
printf(", CIST bridge-id %s.%04x, length %u",
stp_print_bridge_id(ptr + MST_BPDU_CIST_BRIDGE_ID_OFFSET),
EXTRACT_16BITS(&stp_bpdu->port_id), length);
printf("\n\tport-role %s, ",
tok2str(rstp_obj_port_role_values, "Unknown",
RSTP_EXTRACT_PORT_ROLE(stp_bpdu->flags)));
printf("CIST root-id %s, CIST ext-pathcost %u ",
stp_print_bridge_id((const u_char *)&stp_bpdu->root_id),
EXTRACT_32BITS(&stp_bpdu->root_path_cost));
printf("\n\tCIST regional-root-id %s, ",
stp_print_bridge_id((const u_char *)&stp_bpdu->bridge_id));
printf("CIST port-id %04x, ", EXTRACT_16BITS(&stp_bpdu->port_id));
printf("\n\tmessage-age %.2fs, max-age %.2fs"
", hello-time %.2fs, forwarding-delay %.2fs",
@ -225,27 +274,23 @@ stp_print_mstp_bpdu(const struct stp_bpdu_ *stp_bpdu, u_int length)
(float)EXTRACT_16BITS(&stp_bpdu->hello_time) / STP_TIME_BASE,
(float)EXTRACT_16BITS(&stp_bpdu->forward_delay) / STP_TIME_BASE);
printf("\n\tCIST root-id %s, ext-pathcost %u int-pathcost %u",
stp_print_bridge_id((const u_char *)&stp_bpdu->root_id),
EXTRACT_32BITS(&stp_bpdu->root_path_cost),
EXTRACT_32BITS(ptr + MST_BPDU_CIST_INT_PATH_COST_OFFSET));
printf ("\n\tv3len %d, ", EXTRACT_16BITS(ptr + MST_BPDU_VER3_LEN_OFFSET));
printf("MCID Name %s, rev %u, "
"\n\t\tdigest %08x%08x%08x%08x, ",
ptr + MST_BPDU_CONFIG_NAME_OFFSET,
EXTRACT_16BITS(ptr + MST_BPDU_CONFIG_NAME_OFFSET + 32),
EXTRACT_32BITS(ptr + MST_BPDU_CONFIG_DIGEST_OFFSET),
EXTRACT_32BITS(ptr + MST_BPDU_CONFIG_DIGEST_OFFSET + 4),
EXTRACT_32BITS(ptr + MST_BPDU_CONFIG_DIGEST_OFFSET + 8),
EXTRACT_32BITS(ptr + MST_BPDU_CONFIG_DIGEST_OFFSET + 12));
printf(", port-role %s",
tok2str(rstp_obj_port_role_values, "Unknown",
RSTP_EXTRACT_PORT_ROLE(stp_bpdu->flags)));
printf ("CIST int-root-pathcost %u, ",
EXTRACT_32BITS(ptr + MST_BPDU_CIST_INT_PATH_COST_OFFSET));
printf("\n\tCIST regional-root-id %s",
stp_print_bridge_id((const u_char *)&stp_bpdu->bridge_id));
printf("\n\tCIST bridge-id %s, ",
stp_print_bridge_id(ptr + MST_BPDU_CIST_BRIDGE_ID_OFFSET));
printf("\n\tMSTP Configuration Name %s, revision %u, digest %08x%08x%08x%08x",
ptr + MST_BPDU_CONFIG_NAME_OFFSET,
EXTRACT_16BITS(ptr + MST_BPDU_CONFIG_NAME_OFFSET + 32),
EXTRACT_32BITS(ptr + MST_BPDU_CONFIG_DIGEST_OFFSET),
EXTRACT_32BITS(ptr + MST_BPDU_CONFIG_DIGEST_OFFSET + 4),
EXTRACT_32BITS(ptr + MST_BPDU_CONFIG_DIGEST_OFFSET + 8),
EXTRACT_32BITS(ptr + MST_BPDU_CONFIG_DIGEST_OFFSET + 12));
printf("\n\tCIST remaining-hops %d", ptr[MST_BPDU_CIST_REMAIN_HOPS_OFFSET]);
printf("CIST remaining-hops %d", ptr[MST_BPDU_CIST_REMAIN_HOPS_OFFSET]);
/* Dump all MSTI's */
v3len = EXTRACT_16BITS(ptr + MST_BPDU_VER3_LEN_OFFSET);
@ -275,16 +320,48 @@ stp_print_mstp_bpdu(const struct stp_bpdu_ *stp_bpdu, u_int length)
offset += MST_BPDU_MSTI_LENGTH;
}
}
if ((length-offset) >= SPB_BPDU_MIN_LEN)
{
printf("\n\tv4len %d AUXMCID Name %s, Rev %u, \n\t\tdigest %08x%08x%08x%08x",
EXTRACT_16BITS (ptr + offset),
ptr + offset + SPB_BPDU_CONFIG_NAME_OFFSET,
EXTRACT_16BITS(ptr + offset + SPB_BPDU_CONFIG_REV_OFFSET),
EXTRACT_32BITS(ptr + offset + SPB_BPDU_CONFIG_DIGEST_OFFSET),
EXTRACT_32BITS(ptr + offset + SPB_BPDU_CONFIG_DIGEST_OFFSET + 4),
EXTRACT_32BITS(ptr + offset + SPB_BPDU_CONFIG_DIGEST_OFFSET + 8),
EXTRACT_32BITS(ptr + offset + SPB_BPDU_CONFIG_DIGEST_OFFSET + 12));
printf("\n\tAgreement num %d, Discarded Agreement num %d, Agreement valid-"
"flag %d, \n\tRestricted role-flag: %d, Format id %d cap %d, "
"Convention id %d cap %d, \n\tEdge count %d, "
"Agreement digest %08x%08x%08x%08x%08x\n",
ptr[offset + SPB_BPDU_AGREEMENT_OFFSET]>>6,
ptr[offset + SPB_BPDU_AGREEMENT_OFFSET]>>4 & 0x3,
ptr[offset + SPB_BPDU_AGREEMENT_OFFSET]>>3 & 0x1,
ptr[offset + SPB_BPDU_AGREEMENT_OFFSET]>>2 & 0x1,
ptr[offset + SPB_BPDU_AGREEMENT_FORMAT_OFFSET]>>4,
ptr[offset + SPB_BPDU_AGREEMENT_FORMAT_OFFSET]&0x00ff,
ptr[offset + SPB_BPDU_AGREEMENT_CON_OFFSET]>>4,
ptr[offset + SPB_BPDU_AGREEMENT_CON_OFFSET]&0x00ff,
EXTRACT_16BITS(ptr + offset + SPB_BPDU_AGREEMENT_EDGE_OFFSET),
EXTRACT_32BITS(ptr + offset + SPB_BPDU_AGREEMENT_DIGEST_OFFSET),
EXTRACT_32BITS(ptr + offset + SPB_BPDU_AGREEMENT_DIGEST_OFFSET)+4,
EXTRACT_32BITS(ptr + offset + SPB_BPDU_AGREEMENT_DIGEST_OFFSET)+8,
EXTRACT_32BITS(ptr + offset + SPB_BPDU_AGREEMENT_DIGEST_OFFSET)+12,
EXTRACT_32BITS(ptr + offset + SPB_BPDU_AGREEMENT_DIGEST_OFFSET)+16);
}
}
/*
* Print 802.1d / 802.1w / 802.1q (mstp) packets.
* Print 802.1d / 802.1w / 802.1q (mstp) / 802.1aq (spb) packets.
*/
void
stp_print(const u_char *p, u_int length)
{
const struct stp_bpdu_ *stp_bpdu;
u_int16_t mstp_len;
u_int16_t spb_len;
stp_bpdu = (struct stp_bpdu_*)p;
@ -304,6 +381,7 @@ stp_print(const u_char *p, u_int length)
case STP_PROTO_REGULAR:
case STP_PROTO_RAPID:
case STP_PROTO_MSTP:
case STP_PROTO_SPB:
break;
default:
return;
@ -326,20 +404,35 @@ stp_print(const u_char *p, u_int length)
goto trunc;
}
stp_print_config_bpdu(stp_bpdu, length);
} else if (stp_bpdu->protocol_version == STP_PROTO_MSTP) {
} else if (stp_bpdu->protocol_version == STP_PROTO_MSTP ||
stp_bpdu->protocol_version == STP_PROTO_SPB) {
if (length < STP_BPDU_MSTP_MIN_LEN) {
goto trunc;
}
if (stp_bpdu->v1_length != 0) {
/* FIX ME: Emit a message here ? */
goto trunc;
}
/* Validate v3 length */
mstp_len = EXTRACT_16BITS(p + MST_BPDU_VER3_LEN_OFFSET);
mstp_len += 2; /* length encoding itself is 2 bytes */
if (length < (sizeof(struct stp_bpdu_) + mstp_len)) {
goto trunc;
}
if (stp_bpdu->protocol_version == STP_PROTO_SPB)
{
/* Validate v4 length */
spb_len = EXTRACT_16BITS (p + MST_BPDU_VER3_LEN_OFFSET + mstp_len);
spb_len += 2;
if (length < (sizeof(struct stp_bpdu_) + mstp_len + spb_len) ||
spb_len < SPB_BPDU_MIN_LEN) {
goto trunc;
}
}
stp_print_mstp_bpdu(stp_bpdu, length);
}
break;

View File

@ -639,6 +639,15 @@ tcp_print(register const u_char *bp, register u_int length,
return;
}
if (packettype) {
switch (packettype) {
case PT_ZMTP1:
zmtp1_print(bp, length);
break;
}
return;
}
if (sport == TELNET_PORT || dport == TELNET_PORT) {
if (!qflag && vflag)
telnet_print(bp, length);

View File

@ -469,6 +469,16 @@ udp_print(register const u_char *bp, u_int length,
0);
#endif
break;
case PT_RADIUS:
udpipaddr_print(ip, sport, dport);
radius_print(cp, length);
break;
case PT_VXLAN:
udpipaddr_print(ip, sport, dport);
vxlan_print((const u_char *)(up + 1), length);
break;
}
return;
}
@ -658,6 +668,8 @@ udp_print(register const u_char *bp, u_int length,
sip_print((const u_char *)(up + 1), length);
else if (ISPORT(SYSLOG_PORT))
syslog_print((const u_char *)(up + 1), length);
else if (ISPORT(OTV_PORT))
otv_print((const u_char *)(up + 1), length);
else
(void)printf("UDP, length %u",
(u_int32_t)(ulen - sizeof(*up)));

74
print-vxlan.c Normal file
View File

@ -0,0 +1,74 @@
/*
* 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.
* 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.
*
* Original code by Francesco Fondelli (francesco dot fondelli, gmail dot com)
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tcpdump-stdinc.h>
#include <stdio.h>
#include <stdlib.h>
#include "interface.h"
#include "extract.h"
#include "addrtoname.h"
#include "udp.h"
/*
* VXLAN header, draft-mahalingam-dutt-dcops-vxlan-03
*
* 0 1 2 3
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |R|R|R|R|I|R|R|R| Reserved |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | VXLAN Network Identifier (VNI) | Reserved |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
void
vxlan_print(const u_char *bp, u_int len, u_int port)
{
u_int8_t flags;
u_int32_t vni;
if (len < 8) {
printf("[|VXLAN]");
return;
}
flags = *bp;
bp += 4;
vni = EXTRACT_24BITS(bp);
bp += 4;
printf("VXLAN, ");
fputs("flags [", stdout);
if (flags & 0x08)
fputs("I", stdout);
else
fputs(".", stdout);
fputs("] ", stdout);
printf("(0x%02x), ", flags);
printf("vni %u\n", vni);
ether_print(gndo, bp, len - 8, len - 8, NULL, NULL);
return;
}

148
print-zeromq.c Normal file
View File

@ -0,0 +1,148 @@
/*
* This file implements decoding of ZeroMQ network protocol(s).
*
*
* Copyright (c) 2013 The TCPDUMP project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tcpdump-stdinc.h>
#include <stdio.h>
#include "interface.h"
#include "extract.h"
/* Maximum number of ZMTP/1.0 frame body bytes (without the flags) to dump in
* hex and ASCII under a single "-v" flag.
*/
#define VBYTES 128
/*
* Below is an excerpt from the "13/ZMTP" specification:
*
* A ZMTP message consists of 1 or more frames.
*
* A ZMTP frame consists of a length, followed by a flags field and a frame
* body of (length - 1) octets. Note: the length includes the flags field, so
* an empty frame has a length of 1.
*
* For frames with a length of 1 to 254 octets, the length SHOULD BE encoded
* as a single octet. The minimum valid length of a frame is 1 octet, thus a
* length of 0 is invalid and such frames SHOULD be discarded silently.
*
* For frames with lengths of 255 and greater, the length SHALL BE encoded as
* a single octet with the value 255, followed by the length encoded as a
* 64-bit unsigned integer in network byte order. For frames with lengths of
* 1 to 254 octets this encoding MAY be also used.
*
* The flags field consists of a single octet containing various control
* flags. Bit 0 is the least significant bit.
*
* - Bit 0 (MORE): More frames to follow. A value of 0 indicates that there
* are no more frames to follow. A value of 1 indicates that more frames
* will follow. On messages consisting of a single frame the MORE flag MUST
* be 0.
*
* - Bits 1-7: Reserved. Bits 1-7 are reserved for future use and SHOULD be
* zero.
*/
static const u_char *
zmtp1_print_frame(const u_char *cp, const u_char *ep) {
u_int64_t body_len_declared, body_len_captured, header_len;
u_int8_t flags;
printf("\n\t");
TCHECK2(*cp, 1); /* length/0xFF */
if (cp[0] != 0xFF) {
header_len = 1; /* length */
body_len_declared = cp[0];
if (body_len_declared == 0)
return cp + header_len; /* skip to next frame */
printf(" frame flags+body (8-bit) length %"PRIu8"", cp[0]);
TCHECK2(*cp, header_len + 1); /* length, flags */
flags = cp[1];
} else {
header_len = 1 + 8; /* 0xFF, length */
printf(" frame flags+body (64-bit) length");
TCHECK2(*cp, header_len); /* 0xFF, length */
body_len_declared = EXTRACT_64BITS(cp + 1);
if (body_len_declared == 0)
return cp + header_len; /* skip to next frame */
printf(" %"PRIu64"", body_len_declared);
TCHECK2(*cp, header_len + 1); /* 0xFF, length, flags */
flags = cp[9];
}
body_len_captured = ep - cp - header_len;
if (body_len_declared > body_len_captured)
printf(" (%"PRIu64" captured)", body_len_captured);
printf(", flags 0x%02"PRIx8"", flags);
if (vflag) {
u_int64_t body_len_printed = MIN(body_len_captured, body_len_declared);
printf(" (%s|%s|%s|%s|%s|%s|%s|%s)",
flags & 0x80 ? "MBZ" : "-",
flags & 0x40 ? "MBZ" : "-",
flags & 0x20 ? "MBZ" : "-",
flags & 0x10 ? "MBZ" : "-",
flags & 0x08 ? "MBZ" : "-",
flags & 0x04 ? "MBZ" : "-",
flags & 0x02 ? "MBZ" : "-",
flags & 0x01 ? "MORE" : "-");
if (vflag == 1)
body_len_printed = MIN(VBYTES + 1, body_len_printed);
if (body_len_printed > 1) {
printf(", first %"PRIu64" byte(s) of body:", body_len_printed - 1);
hex_and_ascii_print("\n\t ", cp + header_len + 1, body_len_printed - 1);
printf("\n");
}
}
TCHECK2(*cp, header_len + body_len_declared); /* Next frame within the buffer ? */
return cp + header_len + body_len_declared;
trunc:
printf(" [|zmtp1]");
return ep;
}
void
zmtp1_print(const u_char *cp, u_int len) {
const u_char *ep = MIN(snapend, cp + len);
printf(": ZMTP/1.0");
while (cp < ep)
cp = zmtp1_print_frame(cp, ep);
}

2
tcp.h
View File

@ -105,7 +105,7 @@ struct tcphdr {
#define NFS_PORT 2049
#endif
#define MSDP_PORT 639
#define RPKI_RTR_PORT 2222 /* experimental up until sidr-wg registers a well-known port */
#define RPKI_RTR_PORT 323
#define LDP_PORT 646
#ifndef SMB_PORT
#define SMB_PORT 445

View File

@ -22,7 +22,7 @@
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.TH TCPDUMP 1 "05 March 2009"
.TH TCPDUMP 1 "12 July 2012"
.SH NAME
tcpdump \- dump traffic on a network
.SH SYNOPSIS
@ -74,6 +74,10 @@ tcpdump \- dump traffic on a network
.I file
]
[
.B \-V
.I file
]
[
.B \-s
.I snaplen
]
@ -127,8 +131,10 @@ flag, which causes it to save the packet data to a file for later
analysis, and/or with the
.B \-r
flag, which causes it to read from a saved packet file rather than to
read packets from a network interface. In all cases, only packets that
match
read packets from a network interface. It can also be run with the
.B \-V
flag, which causes it to read a list of saved packet files. In all cases,
only packets that match
.I expression
will be processed by
.IR tcpdump .
@ -256,7 +262,9 @@ that lacks the
function.
.TP
.B \-e
Print the link-level header on each dump line.
Print the link-level header on each dump line. This can be used, for
example, to print MAC layer addresses for protocols such as Ethernet and
IEEE 802.11.
.TP
.B \-E
Use \fIspi@ipaddr algo:secret\fP for decrypting IPsec ESP packets that
@ -276,7 +284,7 @@ The default is \fBdes-cbc\fP.
The ability to decrypt packets is only present if \fItcpdump\fP was compiled
with cryptography enabled.
.IP
\fIsecret\fP is the ASCII text for ESP secret key.
\fIsecret\fP is the ASCII text for ESP secret key.
If preceded by 0x, then a hex value will be read.
.IP
The option assumes RFC2406 ESP, not RFC1827 ESP.
@ -288,7 +296,7 @@ you make it visible to others, via
and other occasions.
.IP
In addition to the above syntax, the syntax \fIfile name\fP may be used
to have tcpdump read the provided file in. The file is opened upon
to have tcpdump read the provided file in. The file is opened upon
receiving the first ESP packet, so any special permissions that tcpdump
may have been given should already have been given up.
.TP
@ -509,15 +517,19 @@ Force packets selected by "\fIexpression\fP" to be interpreted the
specified \fItype\fR.
Currently known types are
\fBaodv\fR (Ad-hoc On-demand Distance Vector protocol),
\fBcarp\fR (Common Address Redundancy Protocol),
\fBcnfp\fR (Cisco NetFlow protocol),
\fBradius\fR (RADIUS),
\fBrpc\fR (Remote Procedure Call),
\fBrtp\fR (Real-Time Applications protocol),
\fBrtcp\fR (Real-Time Applications control protocol),
\fBsnmp\fR (Simple Network Management Protocol),
\fBtftp\fR (Trivial File Transfer Protocol),
\fBvat\fR (Visual Audio Tool),
\fBwb\fR (distributed White Board),
\fBzmtp1\fR (ZeroMQ Message Transport Protocol 1.0)
and
\fBwb\fR (distributed White Board).
\fBvxlan\fR (Virtual eXtensible Local Area Network).
.TP
.B \-t
\fIDon't\fP print a timestamp on each dump line.
@ -590,6 +602,10 @@ With
.B \-X
Telnet options are printed in hex as well.
.TP
.B \-V
Read a list of filenames from \fIfile\fR. Standard input is used
if \fIfile\fR is ``-''.
.TP
.B \-w
Write the raw packets to \fIfile\fR rather than parsing and printing
them out.
@ -602,21 +618,30 @@ amount of time after they are received. Use the
.B \-U
flag to cause packets to be written as soon as they are received.
.IP
The MIME type \fIapplication/vnd.tcpdump.pcap\fP has been registered
with IANA for \fIpcap\fP files. The filename extension \fI.pcap\fP
appears to be the most commonly used along with \fI.cap\fP and
\fI.dmp\fP. \fITcpdump\fP itself doesn't check the extension when
reading capture files and doesn't add an extension when writing them
(it uses magic numbers in the file header instead). However, many
operating systems and applications will use the extension if it is
present and adding one (e.g. .pcap) is recommended.
.IP
See
.BR pcap-savefile (@MAN_FILE_FORMATS@)
for a description of the file format.
.TP
.B \-W
Used in conjunction with the
.B \-C
Used in conjunction with the
.B \-C
option, this will limit the number
of files created to the specified number, and begin overwriting files
from the beginning, thus creating a 'rotating' buffer.
from the beginning, thus creating a 'rotating' buffer.
In addition, it will name
the files with enough leading 0s to support the maximum number of
files, allowing them to sort correctly.
.IP
Used in conjunction with the
Used in conjunction with the
.B \-G
option, this will limit the number of rotated dump files that get
created, exiting with status 0 when reaching the limit. If used with
@ -626,7 +651,7 @@ as well, the behavior will result in cyclical files per timeslice.
.B \-x
When parsing and printing,
in addition to printing the headers of each packet, print the data of
each packet (minus its link level header) in hex.
each packet (minus its link level header) in hex.
The smaller of the entire packet or
.I snaplen
bytes will be printed. Note that this is the entire link-layer
@ -705,8 +730,10 @@ For the \fIexpression\fP syntax, see
.LP
Expression arguments can be passed to \fItcpdump\fP as either a single
argument or as multiple arguments, whichever is more convenient.
Generally, if the expression contains Shell metacharacters, it is
easier to pass it as a single, quoted argument.
Generally, if the expression contains Shell metacharacters, such as
backslashes used to escape protocol names, it is easier to pass it as
a single, quoted argument rather than to escape the Shell
metacharacters.
Multiple arguments are concatenated with spaces before being parsed.
.SH EXAMPLES
.LP
@ -1225,7 +1252,7 @@ tcp-push, tcp-act, tcp-urg.
.PP
This can be demonstrated as:
.RS
.B
.B
tcpdump -i xl0 'tcp[tcpflags] & tcp-push != 0'
.RE
.PP
@ -1480,11 +1507,11 @@ not be useful to people who are not familiar with the workings of
AFS and RX.
.LP
If the -v (verbose) flag is given twice, acknowledgement packets and
additional header information is printed, such as the the RX call ID,
additional header information is printed, such as the RX call ID,
call number, sequence number, serial number, and the RX packet flags.
.LP
If the -v flag is given twice, additional information is printed,
such as the the RX call ID, serial number, and the RX packet flags.
such as the RX call ID, serial number, and the RX packet flags.
The MTU negotiation information is also printed from RX ack packets.
.LP
If the -v flag is given three times, the security index and service id
@ -1708,6 +1735,11 @@ serviced the `new packet' interrupt.
.SH "SEE ALSO"
stty(1), pcap(3PCAP), bpf(4), nit(4P), pcap-savefile(@MAN_FILE_FORMATS@),
pcap-filter(@MAN_MISC_INFO@), pcap-tstamp-type(@MAN_MISC_INFO@)
.LP
.RS
.I http://www.iana.org/assignments/media-types/application/vnd.tcpdump.pcap
.RE
.LP
.SH AUTHORS
The original authors are:
.LP
@ -1727,7 +1759,7 @@ The current version is available via http:
The original distribution is available via anonymous ftp:
.LP
.RS
.I ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
.I ftp://ftp.ee.lbl.gov/old/tcpdump.tar.Z
.RE
.LP
IPv6/IPsec support is added by WIDE/KAME project.

308
tcpdump.c
View File

@ -74,6 +74,10 @@ extern int SIZE_BUF;
#include <errno.h>
#endif /* WIN32 */
/* capabilities convinience library */
#ifdef HAVE_CAP_NG_H
#include <cap-ng.h>
#endif /* HAVE_CAP_NG_H */
#include "netdissect.h"
#include "interface.h"
@ -83,8 +87,8 @@ extern int SIZE_BUF;
#include "gmt2local.h"
#include "pcap-missing.h"
#ifndef NAME_MAX
#define NAME_MAX 255
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
#ifdef SIGINFO
@ -461,7 +465,9 @@ show_dlts_and_exit(const char *device, pcap_t *pd)
dlts[n_dlts]);
}
}
#ifdef HAVE_PCAP_FREE_DATALINKS
pcap_free_datalinks(dlts);
#endif
exit(0);
}
@ -532,6 +538,19 @@ droproot(const char *username, const char *chroot_dir)
exit(1);
}
}
#ifdef HAVE_CAP_NG_H
int ret = capng_change_id(pw->pw_uid, pw->pw_gid, CAPNG_NO_FLAG);
if (ret < 0) {
printf("error : ret %d\n", ret);
}
/* We don't need CAP_SETUID and CAP_SETGID */
capng_update(CAPNG_DROP, CAPNG_EFFECTIVE, CAP_SETUID);
capng_update(CAPNG_DROP, CAPNG_EFFECTIVE, CAP_SETUID);
capng_update(CAPNG_DROP, CAPNG_PERMITTED, CAP_SETUID);
capng_update(CAPNG_DROP, CAPNG_PERMITTED, CAP_SETUID);
capng_apply(CAPNG_SELECT_BOTH);
#else
if (initgroups(pw->pw_name, pw->pw_gid) != 0 ||
setgid(pw->pw_gid) != 0 || setuid(pw->pw_uid) != 0) {
fprintf(stderr, "tcpdump: Couldn't change to '%.32s' uid=%lu gid=%lu: %s\n",
@ -541,6 +560,7 @@ droproot(const char *username, const char *chroot_dir)
pcap_strerror(errno));
exit(1);
}
#endif /* HAVE_CAP_NG_H */
}
else {
fprintf(stderr, "tcpdump: Couldn't find user '%.32s'\n",
@ -568,7 +588,9 @@ getWflagChars(int x)
static void
MakeFilename(char *buffer, char *orig_name, int cnt, int max_chars)
{
char *filename = malloc(NAME_MAX + 1);
char *filename = malloc(PATH_MAX + 1);
if (filename == NULL)
error("Makefilename: malloc");
/* Process with strftime if Gflag is set. */
if (Gflag != 0) {
@ -582,17 +604,17 @@ MakeFilename(char *buffer, char *orig_name, int cnt, int max_chars)
/* There's no good way to detect an error in strftime since a return
* value of 0 isn't necessarily failure.
*/
strftime(filename, NAME_MAX, orig_name, local_tm);
strftime(filename, PATH_MAX, orig_name, local_tm);
} else {
strncpy(filename, orig_name, NAME_MAX);
strncpy(filename, orig_name, PATH_MAX);
}
if (cnt == 0 && max_chars == 0)
strncpy(buffer, filename, NAME_MAX + 1);
strncpy(buffer, filename, PATH_MAX + 1);
else
if (snprintf(buffer, NAME_MAX + 1, "%s%0*d", filename, max_chars, cnt) > NAME_MAX)
if (snprintf(buffer, PATH_MAX + 1, "%s%0*d", filename, max_chars, cnt) > PATH_MAX)
/* Report an error if the filename is too large */
error("too many output files or filename is too long (> %d)", NAME_MAX);
error("too many output files or filename is too long (> %d)", PATH_MAX);
free(filename);
}
@ -610,14 +632,55 @@ static int tcpdump_printf(netdissect_options *ndo _U_,
return ret;
}
static struct print_info
get_print_info(int type)
{
struct print_info printinfo;
printinfo.ndo_type = 1;
printinfo.ndo = gndo;
printinfo.p.ndo_printer = lookup_ndo_printer(type);
if (printinfo.p.ndo_printer == NULL) {
printinfo.p.printer = lookup_printer(type);
printinfo.ndo_type = 0;
if (printinfo.p.printer == NULL) {
gndo->ndo_dltname = pcap_datalink_val_to_name(type);
if (gndo->ndo_dltname != NULL)
error("packet printing is not supported for link type %s: use -w",
gndo->ndo_dltname);
else
error("packet printing is not supported for link type %d: use -w", type);
}
}
return (printinfo);
}
static char *
get_next_file(FILE *VFile, char *ptr)
{
char *ret;
ret = fgets(ptr, PATH_MAX, VFile);
if (!ret)
return NULL;
if (ptr[strlen(ptr) - 1] == '\n')
ptr[strlen(ptr) - 1] = '\0';
return ret;
}
int
main(int argc, char **argv)
{
register int cnt, op, i;
bpf_u_int32 localnet, netmask;
register char *cp, *infile, *cmdbuf, *device, *RFileName, *WFileName;
register char *cp, *infile, *cmdbuf, *device, *RFileName, *VFileName, *WFileName;
pcap_handler callback;
int type;
int dlt;
int new_dlt;
const char *dlt_name;
struct bpf_program fcode;
#ifndef WIN32
RETSIGTYPE (*oldhandler)(int);
@ -626,13 +689,17 @@ main(int argc, char **argv)
struct dump_info dumpinfo;
u_char *pcap_userdata;
char ebuf[PCAP_ERRBUF_SIZE];
char VFileLine[PATH_MAX + 1];
char *username = NULL;
char *chroot_dir = NULL;
char *ret = NULL;
char *end;
#ifdef HAVE_PCAP_FINDALLDEVS
pcap_if_t *devpointer;
int devnum;
#endif
int status;
FILE *VFile;
#ifdef WIN32
if(wsockinit() != 0) return 1;
#endif /* WIN32 */
@ -651,7 +718,10 @@ main(int argc, char **argv)
device = NULL;
infile = NULL;
RFileName = NULL;
VFileName = NULL;
VFile = NULL;
WFileName = NULL;
dlt = -1;
if ((cp = strrchr(argv[0], '/')) != NULL)
program_name = cp + 1;
else
@ -665,7 +735,7 @@ main(int argc, char **argv)
#endif
while (
(op = getopt(argc, argv, "aAb" B_FLAG "c:C:d" D_FLAG "eE:fF:G:hHi:" I_FLAG j_FLAG J_FLAG "KlLm:M:nNOpqr:Rs:StT:u" U_FLAG "vw:W:xXy:Yz:Z:")) != -1)
(op = getopt(argc, argv, "aAb" B_FLAG "c:C:d" D_FLAG "eE:fF:G:hHi:" I_FLAG j_FLAG J_FLAG "KlLm:M:nNOpqr:Rs:StT:u" U_FLAG "V:vw:W:xXy:Yz:Z:")) != -1)
switch (op) {
case 'a':
@ -781,7 +851,8 @@ main(int argc, char **argv)
* It can be useful on Windows, where more than
* one interface can have the same name.
*/
if ((devnum = atoi(optarg)) != 0) {
devnum = strtol(optarg, &end, 10);
if (optarg != end && *end == '\0') {
if (devnum < 0)
error("Invalid adapter index");
@ -900,9 +971,7 @@ main(int argc, char **argv)
Rflag = 0;
break;
case 's': {
char *end;
case 's':
snaplen = strtol(optarg, &end, 0);
if (optarg == end || *end != '\0'
|| snaplen < 0 || snaplen > MAXIMUM_SNAPLEN)
@ -910,7 +979,6 @@ main(int argc, char **argv)
else if (snaplen == 0)
snaplen = MAXIMUM_SNAPLEN;
break;
}
case 'S':
++Sflag;
@ -941,6 +1009,12 @@ main(int argc, char **argv)
packettype = PT_AODV;
else if (strcasecmp(optarg, "carp") == 0)
packettype = PT_CARP;
else if (strcasecmp(optarg, "radius") == 0)
packettype = PT_RADIUS;
else if (strcasecmp(optarg, "zmtp1") == 0)
packettype = PT_ZMTP1;
else if (strcasecmp(optarg, "vxlan") == 0)
packettype = PT_VXLAN;
else
error("unknown packet type `%s'", optarg);
break;
@ -959,6 +1033,10 @@ main(int argc, char **argv)
++vflag;
break;
case 'V':
VFileName = optarg;
break;
case 'w':
WFileName = optarg;
break;
@ -1044,6 +1122,12 @@ main(int argc, char **argv)
break;
}
if (fflag != 0 && (VFileName != NULL || RFileName != NULL))
error("-f can not be used with -V or -r");
if (VFileName != NULL && RFileName != NULL)
error("-V and -r are mutually exclusive.");
#ifdef WITH_CHROOT
/* if run as root, prepare for chrooting */
if (getuid() == 0 || geteuid() == 0) {
@ -1062,10 +1146,16 @@ main(int argc, char **argv)
}
#endif
if (RFileName != NULL) {
int dlt;
const char *dlt_name;
if (RFileName != NULL || VFileName != NULL) {
/*
* If RFileName is non-null, it's the pathname of a
* savefile to read. If VFileName is non-null, it's
* the pathname of a file containing a list of pathnames
* (one per line) of savefiles to read.
*
* In either case, we're reading a savefile, not doing
* a live capture.
*/
#ifndef WIN32
/*
* We don't need network access, so relinquish any set-UID
@ -1079,6 +1169,21 @@ main(int argc, char **argv)
if (setgid(getgid()) != 0 || setuid(getuid()) != 0 )
fprintf(stderr, "Warning: setgid/setuid failed !\n");
#endif /* WIN32 */
if (VFileName != NULL) {
if (VFileName[0] == '-' && VFileName[1] == '\0')
VFile = stdin;
else
VFile = fopen(VFileName, "r");
if (VFile == NULL)
error("Unable to open file: %s\n", strerror(errno));
ret = get_next_file(VFile, VFileLine);
if (!ret)
error("Nothing in %s\n", VFileName);
RFileName = VFileLine;
}
pd = pcap_open_offline(RFileName, ebuf);
if (pd == NULL)
error("%s", ebuf);
@ -1095,15 +1200,20 @@ main(int argc, char **argv)
}
localnet = 0;
netmask = 0;
if (fflag != 0)
error("-f and -r options are incompatible");
} else {
/*
* We're doing a live capture.
*/
if (device == NULL) {
device = pcap_lookupdev(ebuf);
if (device == NULL)
error("%s", ebuf);
}
#ifdef WIN32
/*
* Print a message to the standard error on Windows.
* XXX - why do it here, with a different message?
*/
if(strlen(device) == 1) //we assume that an ASCII string is always longer than 1 char
{ //a Unicode string has a \0 as second byte (so strlen() is 1)
fprintf(stderr, "%s: listening on %ws\n", program_name, device);
@ -1254,10 +1364,10 @@ main(int argc, char **argv)
if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0)
error("%s", pcap_geterr(pd));
free(cmdbuf);
if (dflag) {
bpf_dump(&fcode, dflag);
pcap_close(pd);
free(cmdbuf);
exit(0);
}
init_addrtoname(localnet, netmask);
@ -1295,9 +1405,31 @@ main(int argc, char **argv)
* Switching to the -Z user ID only after opening the first
* savefile doesn't handle the general case.
*/
#ifdef HAVE_CAP_NG_H
/* We are running as root and we will be writing to savefile */
if ((getuid() == 0 || geteuid() == 0) && WFileName) {
if (username) {
/* Drop all capabilities from effective set */
capng_clear(CAPNG_EFFECTIVE);
/* Add capabilities we will need*/
capng_update(CAPNG_ADD, CAPNG_PERMITTED, CAP_SETUID);
capng_update(CAPNG_ADD, CAPNG_PERMITTED, CAP_SETGID);
capng_update(CAPNG_ADD, CAPNG_PERMITTED, CAP_DAC_OVERRIDE);
capng_update(CAPNG_ADD, CAPNG_EFFECTIVE, CAP_SETUID);
capng_update(CAPNG_ADD, CAPNG_EFFECTIVE, CAP_SETGID);
capng_update(CAPNG_ADD, CAPNG_EFFECTIVE, CAP_DAC_OVERRIDE);
capng_apply(CAPNG_SELECT_BOTH);
}
}
#endif /* HAVE_CAP_NG_H */
if (getuid() == 0 || geteuid() == 0) {
if (username || chroot_dir)
droproot(username, chroot_dir);
}
#endif /* WIN32 */
@ -1305,8 +1437,8 @@ main(int argc, char **argv)
error("%s", pcap_geterr(pd));
if (WFileName) {
pcap_dumper_t *p;
/* Do not exceed the default NAME_MAX for files. */
dumpinfo.CurrentFileName = (char *)malloc(NAME_MAX + 1);
/* Do not exceed the default PATH_MAX for files. */
dumpinfo.CurrentFileName = (char *)malloc(PATH_MAX + 1);
if (dumpinfo.CurrentFileName == NULL)
error("malloc of dumpinfo.CurrentFileName");
@ -1318,6 +1450,10 @@ main(int argc, char **argv)
MakeFilename(dumpinfo.CurrentFileName, WFileName, 0, 0);
p = pcap_dump_open(pd, dumpinfo.CurrentFileName);
#ifdef HAVE_CAP_NG_H
/* Give up capabilities, clear Effective set */
capng_clear(CAPNG_EFFECTIVE);
#endif
if (p == NULL)
error("%s", pcap_geterr(pd));
if (Cflag != 0 || Gflag != 0) {
@ -1336,21 +1472,7 @@ main(int argc, char **argv)
#endif
} else {
type = pcap_datalink(pd);
printinfo.ndo_type = 1;
printinfo.ndo = gndo;
printinfo.p.ndo_printer = lookup_ndo_printer(type);
if (printinfo.p.ndo_printer == NULL) {
printinfo.p.printer = lookup_printer(type);
printinfo.ndo_type = 0;
if (printinfo.p.printer == NULL) {
gndo->ndo_dltname = pcap_datalink_val_to_name(type);
if (gndo->ndo_dltname != NULL)
error("packet printing is not supported for link type %s: use -w",
gndo->ndo_dltname);
else
error("packet printing is not supported for link type %d: use -w", type);
}
}
printinfo = get_print_info(type);
callback = print_packet;
pcap_userdata = (u_char *)&printinfo;
}
@ -1382,9 +1504,11 @@ main(int argc, char **argv)
#ifndef WIN32
if (RFileName == NULL) {
int dlt;
const char *dlt_name;
/*
* Live capture (if -V was specified, we set RFileName
* to a file from the -V file). Print a message to
* the standard error on UN*X.
*/
if (!vflag && !WFileName) {
(void)fprintf(stderr,
"%s: verbose output suppressed, use -v or -vv for full protocol decode\n",
@ -1404,37 +1528,69 @@ main(int argc, char **argv)
(void)fflush(stderr);
}
#endif /* WIN32 */
status = pcap_loop(pd, cnt, callback, pcap_userdata);
if (WFileName == NULL) {
/*
* We're printing packets. Flush the printed output,
* so it doesn't get intermingled with error output.
*/
if (status == -2) {
do {
status = pcap_loop(pd, cnt, callback, pcap_userdata);
if (WFileName == NULL) {
/*
* We got interrupted, so perhaps we didn't
* manage to finish a line we were printing.
* Print an extra newline, just in case.
* We're printing packets. Flush the printed output,
* so it doesn't get intermingled with error output.
*/
putchar('\n');
if (status == -2) {
/*
* We got interrupted, so perhaps we didn't
* manage to finish a line we were printing.
* Print an extra newline, just in case.
*/
putchar('\n');
}
(void)fflush(stdout);
}
if (status == -1) {
/*
* Error. Report it.
*/
(void)fprintf(stderr, "%s: pcap_loop: %s\n",
program_name, pcap_geterr(pd));
}
if (RFileName == NULL) {
/*
* We're doing a live capture. Report the capture
* statistics.
*/
info(1);
}
pcap_close(pd);
if (VFileName != NULL) {
ret = get_next_file(VFile, VFileLine);
if (ret) {
RFileName = VFileLine;
pd = pcap_open_offline(RFileName, ebuf);
if (pd == NULL)
error("%s", ebuf);
new_dlt = pcap_datalink(pd);
if (WFileName && new_dlt != dlt)
error("%s: new dlt does not match original", RFileName);
printinfo = get_print_info(new_dlt);
dlt_name = pcap_datalink_val_to_name(new_dlt);
if (dlt_name == NULL) {
fprintf(stderr, "reading from file %s, link-type %u\n",
RFileName, new_dlt);
} else {
fprintf(stderr,
"reading from file %s, link-type %s (%s)\n",
RFileName, dlt_name,
pcap_datalink_val_to_description(new_dlt));
}
if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0)
error("%s", pcap_geterr(pd));
if (pcap_setfilter(pd, &fcode) < 0)
error("%s", pcap_geterr(pd));
}
}
(void)fflush(stdout);
}
if (status == -1) {
/*
* Error. Report it.
*/
(void)fprintf(stderr, "%s: pcap_loop: %s\n",
program_name, pcap_geterr(pd));
}
if (RFileName == NULL) {
/*
* We're doing a live capture. Report the capture
* statistics.
*/
info(1);
}
pcap_close(pd);
while (ret != NULL);
free(cmdbuf);
exit(status == -1 ? 1 : 0);
}
@ -1635,7 +1791,7 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s
if (dump_info->CurrentFileName != NULL)
free(dump_info->CurrentFileName);
/* Allocate space for max filename + \0. */
dump_info->CurrentFileName = (char *)malloc(NAME_MAX + 1);
dump_info->CurrentFileName = (char *)malloc(PATH_MAX + 1);
if (dump_info->CurrentFileName == NULL)
error("dump_packet_and_trunc: malloc");
/*
@ -1649,7 +1805,15 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s
else
MakeFilename(dump_info->CurrentFileName, dump_info->WFileName, 0, 0);
#ifdef HAVE_CAP_NG_H
capng_update(CAPNG_ADD, CAPNG_EFFECTIVE, CAP_DAC_OVERRIDE);
capng_apply(CAPNG_EFFECTIVE);
#endif /* HAVE_CAP_NG_H */
dump_info->p = pcap_dump_open(dump_info->pd, dump_info->CurrentFileName);
#ifdef HAVE_CAP_NG_H
capng_update(CAPNG_DROP, CAPNG_EFFECTIVE, CAP_DAC_OVERRIDE);
capng_apply(CAPNG_EFFECTIVE);
#endif /* HAVE_CAP_NG_H */
if (dump_info->p == NULL)
error("%s", pcap_geterr(pd));
}
@ -1679,7 +1843,7 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s
}
if (dump_info->CurrentFileName != NULL)
free(dump_info->CurrentFileName);
dump_info->CurrentFileName = (char *)malloc(NAME_MAX + 1);
dump_info->CurrentFileName = (char *)malloc(PATH_MAX + 1);
if (dump_info->CurrentFileName == NULL)
error("dump_packet_and_trunc: malloc");
MakeFilename(dump_info->CurrentFileName, dump_info->WFileName, Cflag_count, WflagChars);
@ -1918,7 +2082,7 @@ usage(void)
(void)fprintf(stderr,
"\t\t[ -i interface ]" j_FLAG_USAGE " [ -M secret ]\n");
(void)fprintf(stderr,
"\t\t[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]\n");
"\t\t[ -r file ] [ -s snaplen ] [ -T type ] [ -V file ] [ -w file ]\n");
(void)fprintf(stderr,
"\t\t[ -W filecount ] [ -y datalinktype ] [ -z command ]\n");
(void)fprintf(stderr,

View File

@ -1,5 +1,6 @@
# BGP test
# BGP tests
bgp_vpn_attrset bgp_vpn_attrset.pcap bgp_vpn_attrset.out -t -v
mpbgp-linklocal-nexthop mpbgp-linklocal-nexthop.pcap mpbgp-linklocal-nexthop.out -t -v
# EAP tests
eapon1 eapon1.pcap eapon1.out -t
@ -60,9 +61,36 @@ sflow1 sflow_multiple_counter_30_pdus.pcap sflow_multiple_counter_3
# Babel tests
babel1 babel.pcap babel1.out -t
babel1v babel.pcap babel1v.out -t -v
babel_auth babel_auth.pcap babel_auth.out -t -v
# PPPoE tests
pppoe pppoe.pcap pppoe.out -t
# IGMP tests
igmpv3-queries igmpv3-queries.pcap igmpv3-queries.out -t
# ICMPv6
icmpv6 icmpv6.pcap icmpv6.out -t -vv -c1
icmpv6 icmpv6.pcap icmpv6.out -t -vv
# SPB tests
spb spb.pcap spb.out -t
# SPB BPDUv4 tests
spb_bpduv4 spb_bpduv4.pcap spb_bpduv4.out -t
# RIP tests
ripv1v2 ripv1v2.pcap ripv1v2.out -t -v
ripv2_auth ripv2_auth.pcap ripv2_auth.out -t -v
# DHCPv6 tests
dhcpv6-aftr-name dhcpv6-AFTR-Name-RFC6334.pcap dhcpv6-AFTR-Name-RFC6334.out -t -v
dhcpv6-ia-na dhcpv6-ia-na.pcap dhcpv6-ia-na.out -t -v
dhcpv6-ia-pd dhcpv6-ia-pd.pcap dhcpv6-ia-pd.out -t -v
dhcpv6-ia-ta dhcpv6-ia-ta.pcap dhcpv6-ia-ta.out -t -v
# ZeroMQ tests
zmtp1v zmtp1.pcap zmtp1.out -t -v -T zmtp1
# MS NLB tests
msnlb msnlb.pcap msnlb.out -t
msnlb2 msnlb2.pcap msnlb2.out -t

View File

@ -4,6 +4,7 @@ mkdir -p NEW
mkdir -p DIFF
passed=0
failed=0
cat /dev/null > failure-outputs.txt
# first run any specific tests.
for i in *.sh
@ -42,6 +43,10 @@ do
echo $name: failed.
failed=`expr $failed + 1`
echo $failed >.failed
echo "Failed test: $name" >> failure-outputs.txt
echo >> failure-outputs.txt
cat DIFF/$output.diff >> failure-outputs.txt
echo >> failure-outputs.txt
fi
done
@ -56,6 +61,9 @@ printf "%4u tests failed\n" $failed
printf "%4u tests passed\n" $passed
echo
echo
cat failure-outputs.txt
echo
echo
exit $failed

13
tests/babel_auth.out Normal file
View File

@ -0,0 +1,13 @@
IP6 (class 0xc0, hlim 1, next-header UDP (17) payload length: 436) fe80::b299:28ff:fec8:d646.6696 > ff02::1:6.6696: [udp sum ok] babel 2 (424)
Hello seqno 58134 interval 400
Update/id ::/0 metric 65535 seqno 41391 interval 65535
Request for any
TS/PC timestamp 1339081200 packetcounter 2
HMAC key-id 30 digest-20 AD0FA7CD8D5A1898EC5409C8EDDA68B3ACA21B80
HMAC key-id 50 digest-32 8239F283D985047FA4B88597FDE3246455C6E4DD917B1441C2F3A82B9F737674
HMAC key-id 1000 digest-64 6718CB4C2BB0976C127AB3CCCBFA1105A1D158F035BC9FAD86B0610A7ACD27E5A3D5A3090FFB0312D7CBB31834E5D3EA2B68CD1FEC3CFB9CE731D16BA8FEBA8C
HMAC key-id 1000 digest-48 D2A5B80FF9D006907E3B6601C0C255D7D12D6EC61815E413A334E2A0D9271C75AFBC086C070C714E3EFF3496C20C56FB
HMAC key-id 100 digest-20 7213CED66FE7154034EC64CD14AE4142A092DF33
HMAC key-id 2000 digest-64 2A5D9D55393B19E440FAC49BDA521E18A7FE77F7AB4A90377009E46E2FFE49336435C7E4E7BE215996DF4F59C167EA1CCCDB4FF788DA29A30E34D974307ADFF4
HMAC key-id 2000 digest-48 FE91AF27EEE137EF489F37FEE449100CDA8CCB3E794D0C4A225D12724A8CE2FFC85811B879CC566FD172269847091ED1
HMAC key-id 3000 digest-64 38C4D82883A5778500D728D1E243E7579DE96FA726C9DB7F0805C52E96FEFDCE7A5FB9AF2CB845703926EAAB43C3E44989D6CCB158FC06DB455E9F8D0550B54F

BIN
tests/babel_auth.pcap Normal file

Binary file not shown.

View File

@ -0,0 +1,4 @@
IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=d81eb8 (client-ID hwaddr type 1 000102030405) (option-request DNS-server AFTR-Name) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400))
IP6 (hlim 64, next-header UDP (17) payload length: 142) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=d81eb8 (IA_PD IAID:33752069 T1:150 T2:250 (IA_PD-prefix 2a00:1:1:100::/56 pltime:250 vltime:300)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (preference 10) (DNS-server 2a01::1) (AFTR-Name aftr-name.mydomain.net))
IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 103) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=1e291d (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (option-request DNS-server AFTR-Name) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:7200 vltime:7500)))
IP6 (hlim 64, next-header UDP (17) payload length: 142) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=1e291d (IA_PD IAID:33752069 T1:150 T2:250 (IA_PD-prefix 2a00:1:1:100::/56 pltime:250 vltime:300)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (preference 10) (DNS-server 2a01::1) (AFTR-Name aftr-name.mydomain.net))

Binary file not shown.

4
tests/dhcpv6-ia-na.out Normal file
View File

@ -0,0 +1,4 @@
IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=90b45c (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_NA IAID:33752069 T1:3600 T2:5400))
IP6 (hlim 64, next-header UDP (17) payload length: 88) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=90b45c (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455))
IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 102) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=2ffdd1 (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:7200 vltime:7500)))
IP6 (hlim 64, next-header UDP (17) payload length: 88) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=2ffdd1 (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455))

BIN
tests/dhcpv6-ia-na.pcap Normal file

Binary file not shown.

4
tests/dhcpv6-ia-pd.out Normal file
View File

@ -0,0 +1,4 @@
IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=e1e093 (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400))
IP6 (hlim 64, next-header UDP (17) payload length: 89) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=e1e093 (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455))
IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 103) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=12b08a (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:7200 vltime:7500)))
IP6 (hlim 64, next-header UDP (17) payload length: 89) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=12b08a (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455))

BIN
tests/dhcpv6-ia-pd.pcap Normal file

Binary file not shown.

4
tests/dhcpv6-ia-ta.out Normal file
View File

@ -0,0 +1,4 @@
IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 48) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=28b040 (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_TA IAID:33752069))
IP6 (hlim 64, next-header UDP (17) payload length: 80) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=28b040 (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455))
IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 94) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=2b0e45 (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:7200 vltime:7500)))
IP6 (hlim 64, next-header UDP (17) payload length: 80) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=2b0e45 (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455))

BIN
tests/dhcpv6-ia-ta.pcap Normal file

Binary file not shown.

View File

BIN
tests/forces2.pcap Normal file

Binary file not shown.

751
tests/forces2vvv.out Normal file
View File

@ -0,0 +1,751 @@
05:12:46.942414 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [INIT] [init tag: 2926667004] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 1498547998]
05:12:46.943161 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [INIT ACK] [init tag: 3861163764] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2413889661]
05:12:46.943242 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [COOKIE ECHO]
05:12:46.943643 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [COOKIE ACK]
05:12:47.944776 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [INIT] [init tag: 3153359751] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 3738337023]
05:12:47.946163 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [INIT ACK] [init tag: 562272820] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2275981483]
05:12:47.946319 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [COOKIE ECHO]
05:12:47.947214 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [COOKIE ACK]
05:12:48.948471 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [INIT] [init tag: 1637919099] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 922703190]
05:12:48.949179 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [INIT ACK] [init tag: 2538997808] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2244318871]
05:12:48.949212 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [COOKIE ECHO]
05:12:48.950191 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [COOKIE ACK]
05:12:49.951610 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [DATA] (B)(E) [TSN: 1498547998] [SID: 0] [SSEQ 0] [PPID 0x0]
ForCES Association Setup
ForCES Version 1 len 24B flags 0xf8000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x1
ForCES flags:
AlwaysACK(0x3), prio=7, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:12:49.952213 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [SACK] [cum ack 1498547998] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0]
05:12:49.983328 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [DATA] (B)(E) [TSN: 2413889661] [SID: 0] [SSEQ 0] [PPID 0x0]
ForCES Association Response
ForCES Version 1 len 32B flags 0x38100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x1
ForCES flags:
NoACK(0x0), prio=7, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:12:49.983414 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [SACK] [cum ack 2413889661] [a_rwnd 57312] [#gap acks 0] [#dup tsns 0]
05:13:09.990457 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318871] [SID: 0] [SSEQ 0] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x1
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:13:09.990576 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318871] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0]
05:13:10.977285 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 922703190] [SID: 0] [SSEQ 0] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x1
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:13:10.977790 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703190] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0]
05:13:20.110083 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB REQ]
05:13:20.110531 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB ACK]
05:13:20.668242 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB REQ]
05:13:20.668307 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB ACK]
05:13:21.822790 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB REQ]
05:13:21.822849 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB ACK]
05:13:22.926155 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB REQ]
05:13:22.926561 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB ACK]
05:13:30.012956 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318872] [SID: 0] [SSEQ 1] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x2
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:13:30.213362 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318872] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:13:30.998747 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 922703191] [SID: 0] [SSEQ 1] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x2
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:13:31.199633 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703191] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:13:50.022950 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318873] [SID: 0] [SSEQ 2] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x3
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:13:50.222804 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318873] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:13:50.957859 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB REQ]
05:13:50.958254 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB ACK]
05:13:51.017217 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 922703192] [SID: 0] [SSEQ 2] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x3
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:13:51.218065 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703192] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:13:52.029041 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB REQ]
05:13:52.029131 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB ACK]
05:13:52.668078 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB REQ]
05:13:52.668129 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB ACK]
05:13:54.157975 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB REQ]
05:13:54.158408 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB ACK]
05:14:10.034601 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318874] [SID: 0] [SSEQ 3] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x4
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:14:10.036750 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318874] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703193] [SID: 0] [SSEQ 3] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x4
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:14:10.237566 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703193] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:14:22.318623 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB REQ]
05:14:22.319118 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB ACK]
05:14:23.004801 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB REQ]
05:14:23.004855 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB ACK]
05:14:23.644941 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB REQ]
05:14:23.645019 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB ACK]
05:14:25.517659 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB REQ]
05:14:25.518177 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB ACK]
05:14:30.056428 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318875] [SID: 0] [SSEQ 4] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x5
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:14:30.058780 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318875] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703194] [SID: 0] [SSEQ 4] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x5
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:14:30.260069 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703194] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:14:50.070392 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318876] [SID: 0] [SSEQ 5] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x6
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:14:50.078619 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318876] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703195] [SID: 0] [SSEQ 5] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x6
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:14:50.278482 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703195] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:14:52.910320 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB REQ]
05:14:52.910757 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB ACK]
05:14:54.236596 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB REQ]
05:14:54.236684 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB ACK]
05:14:54.236747 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB REQ]
05:14:54.236765 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB ACK]
05:14:56.494447 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB REQ]
05:14:56.494903 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB ACK]
05:15:10.087164 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318877] [SID: 0] [SSEQ 6] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x7
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:15:10.099646 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318877] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703196] [SID: 0] [SSEQ 6] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x7
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:15:10.300908 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703196] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:15:24.142057 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB REQ]
05:15:24.142436 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB ACK]
05:15:25.468346 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB REQ]
05:15:25.468420 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB ACK]
05:15:25.724070 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB REQ]
05:15:25.724132 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB ACK]
05:15:27.854217 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB REQ]
05:15:27.854637 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB ACK]
05:15:30.103924 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318878] [SID: 0] [SSEQ 7] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x8
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:15:30.121626 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318878] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703197] [SID: 0] [SSEQ 7] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x8
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:15:30.322461 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703197] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:15:50.116903 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318879] [SID: 0] [SSEQ 8] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x9
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:15:50.141079 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318879] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703198] [SID: 0] [SSEQ 8] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x9
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:15:50.341982 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703198] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:15:51.957705 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 140)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [DATA] (B)(E) [TSN: 2413889662] [SID: 0] [SSEQ 1] [PPID 0x0]
ForCES Config
ForCES Version 1 len 92B flags 0x78400000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x10
ForCES flags:
SuccessACK(0x1), prio=7, execute-all-or-none(0x1),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:15:52.144354 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 156)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [SACK] [cum ack 2413889662] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 1498547999] [SID: 0] [SSEQ 1] [PPID 0x0]
ForCES Config Response
ForCES Version 1 len 92B flags 0x38400000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x10
ForCES flags:
NoACK(0x0), prio=7, execute-all-or-none(0x1),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:15:52.344974 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [SACK] [cum ack 1498547999] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:15:55.629842 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB REQ]
05:15:55.630342 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB ACK]
05:15:56.189088 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB REQ]
05:15:56.189160 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB ACK]
05:16:11.972673 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318880] [SID: 0] [SSEQ 9] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x11
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:16:12.163738 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318880] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703199] [SID: 0] [SSEQ 9] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x11
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:16:12.364365 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703199] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:16:22.766463 IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB REQ]
05:16:22.766888 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB ACK]
05:16:22.812607 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB REQ]
05:16:22.812641 IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB ACK]
05:16:26.908770 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB REQ]
05:16:26.908850 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB ACK]
05:16:27.118570 IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB REQ]
05:16:27.118998 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB ACK]
05:16:31.990056 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318881] [SID: 0] [SSEQ 10] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x12
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:16:32.184118 IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318881] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703200] [SID: 0] [SSEQ 10] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x12
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:16:32.384948 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703200] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:16:52.009081 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [DATA] (B)(E) [TSN: 2244318882] [SID: 0] [SSEQ 11] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0xc0100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x13
ForCES flags:
AlwaysACK(0x3), prio=0, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:16:52.205727 IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132), length 88)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SACK] [cum ack 2244318882] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
2) [DATA] (B)(E) [TSN: 922703201] [SID: 0] [SSEQ 11] [PPID 0x0]
ForCES HeartBeat
ForCES Version 1 len 24B flags 0x08000000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x13
ForCES flags:
NoACK(0x0), prio=1, EMReserved(0x0),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:16:52.406443 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SACK] [cum ack 922703201] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:16:53.532328 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB REQ]
05:16:53.532396 IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB ACK]
05:16:53.998215 IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [HB REQ]
05:16:53.998632 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [HB ACK]
05:16:57.965660 IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB REQ]
05:16:57.966179 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB ACK]
05:16:58.268666 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [HB REQ]
05:16:58.268737 IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [HB ACK]
05:16:58.751669 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 124)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [DATA] (B)(E) [TSN: 2413889663] [SID: 0] [SSEQ 2] [PPID 0x0]
ForCES Query
ForCES Version 1 len 76B flags 0x78400000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x14
ForCES flags:
SuccessACK(0x1), prio=7, execute-all-or-none(0x1),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:16:58.952418 IP (tos 0x2,ECT(0), ttl 64, id 18, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [SACK] [cum ack 2413889663] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:16:59.213890 IP (tos 0x2,ECT(0), ttl 64, id 19, offset 0, flags [DF], proto SCTP (132), length 140)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [DATA] (B)(E) [TSN: 1498548000] [SID: 0] [SSEQ 2] [PPID 0x0]
ForCES Query Response
ForCES Version 1 len 92B flags 0x38400000
SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x14
ForCES flags:
NoACK(0x0), prio=7, execute-all-or-none(0x1),
Standalone(0x0), StartofTransaction(0x0)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:16:59.414572 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [SACK] [cum ack 1498548000] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:17:06.275584 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [DATA] (B)(E) [TSN: 2413889664] [SID: 0] [SSEQ 3] [PPID 0x0]
ForCES Association TearDown
ForCES Version 1 len 32B flags 0x38100000
SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x0
ForCES flags:
NoACK(0x0), prio=7, EMReserved(0x0),
Standalone(0x0), EndofTransaction(0x2)
Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
05:17:06.475558 IP (tos 0x2,ECT(0), ttl 64, id 20, offset 0, flags [DF], proto SCTP (132), length 48)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [SACK] [cum ack 2413889664] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0]
05:17:07.278281 IP (tos 0x2,ECT(0), ttl 64, id 21, offset 0, flags [DF], proto SCTP (132), length 40)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [SHUTDOWN]
05:17:07.278648 IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132), length 40)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [SHUTDOWN]
05:17:07.278805 IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132), length 40)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SHUTDOWN]
05:17:07.278894 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
1) [SHUTDOWN ACK]
05:17:07.278986 IP (tos 0x2,ECT(0), ttl 64, id 22, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
1) [SHUTDOWN COMPLETE]
05:17:07.279062 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
1) [SHUTDOWN ACK]
05:17:07.279086 IP (tos 0x2,ECT(0), ttl 64, id 18, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
1) [SHUTDOWN COMPLETE]
05:17:07.279125 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
1) [SHUTDOWN ACK]
05:17:07.279383 IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SHUTDOWN COMPLETE]
05:17:08.224255 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
192.168.1.142.60979 > 192.168.1.143.6704: sctp[ForCES HP]
1) [INIT] [init tag: 893123932] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 4001675829]
05:17:08.224782 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
192.168.1.143.6704 > 192.168.1.142.60979: sctp[ForCES HP]
1) [INIT ACK] [init tag: 3751052708] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2904779402]
05:17:08.224834 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
192.168.1.142.60979 > 192.168.1.143.6704: sctp[ForCES HP]
1) [COOKIE ECHO]
05:17:08.225194 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6704 > 192.168.1.142.60979: sctp[ForCES HP]
1) [COOKIE ACK]
05:17:09.226814 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
192.168.1.142.41874 > 192.168.1.143.6705: sctp[ForCES MP]
1) [INIT] [init tag: 2631831000] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 3186084970]
05:17:09.227378 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
192.168.1.143.6705 > 192.168.1.142.41874: sctp[ForCES MP]
1) [INIT ACK] [init tag: 1025500394] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 492081856]
05:17:09.227470 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
192.168.1.142.41874 > 192.168.1.143.6705: sctp[ForCES MP]
1) [COOKIE ECHO]
05:17:09.227843 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6705 > 192.168.1.142.41874: sctp[ForCES MP]
1) [COOKIE ACK]
05:17:10.234920 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
192.168.1.142.43249 > 192.168.1.143.6706: sctp[ForCES LP]
1) [INIT] [init tag: 1071698335] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 1223456824]
05:17:10.235259 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
192.168.1.143.6706 > 192.168.1.142.43249: sctp[ForCES LP]
1) [INIT ACK] [init tag: 2401559485] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 4176597732]
05:17:10.235295 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
192.168.1.142.43249 > 192.168.1.143.6706: sctp[ForCES LP]
1) [COOKIE ECHO]
05:17:10.235559 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6706 > 192.168.1.142.43249: sctp[ForCES LP]
1) [COOKIE ACK]
05:17:10.432954 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 40)
192.168.1.142.60979 > 192.168.1.143.6704: sctp[ForCES HP]
1) [SHUTDOWN]
05:17:10.433287 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 40)
192.168.1.142.41874 > 192.168.1.143.6705: sctp[ForCES MP]
1) [SHUTDOWN]
05:17:10.433473 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6704 > 192.168.1.142.60979: sctp[ForCES HP]
1) [SHUTDOWN ACK]
05:17:10.433517 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.142.60979 > 192.168.1.143.6704: sctp[ForCES HP]
1) [SHUTDOWN COMPLETE]
05:17:10.433629 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6705 > 192.168.1.142.41874: sctp[ForCES MP]
1) [SHUTDOWN ACK]
05:17:10.433866 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.142.41874 > 192.168.1.143.6705: sctp[ForCES MP]
1) [SHUTDOWN COMPLETE]
05:17:10.434075 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 40)
192.168.1.142.43249 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SHUTDOWN]
05:17:10.434365 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.143.6706 > 192.168.1.142.43249: sctp[ForCES LP]
1) [SHUTDOWN ACK]
05:17:10.434388 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 36)
192.168.1.142.43249 > 192.168.1.143.6706: sctp[ForCES LP]
1) [SHUTDOWN COMPLETE]

BIN
tests/forces3.pcap Normal file

Binary file not shown.

View File

@ -1,13 +1,26 @@
IP6 (hlim 255, next-header ICMPv6 (58) payload length: 80) fe80::d498:f9ff:fee7:896 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 80
IP6 (hlim 255, next-header ICMPv6 (58) payload length: 176) fe80::b299:28ff:fec8:d66c > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 176
hop limit 64, Flags [home agent], pref medium, router lifetime 15s, reachable time 0s, retrans time 0s
homeagent information option (8), length 8 (1): preference 50001, lifetime 15
0x0000: 0000 c351 000f
advertisement interval option (7), length 8 (1): 5000ms
0x0000: 0000 0000 1388
prefix info option (3), length 32 (4): 2222:3333:4444:5555:6600::/72, Flags [onlink, auto], valid time 2592000s, pref. time 604800s
0x0000: 48c0 0027 8d00 0009 3a80 0000 0000 2222
0x0010: 3333 4444 5555 6600 0000 0000 0000
source link-address option (1), length 8 (1): d6:98:f9:e7:08:96
0x0000: d698 f9e7 0896
rdnss option (25), length 40 (5): lifetime 5s, addr: abcd::efef addr: 1234:5678::1
0x0000: 0000 0000 0005 abcd 0000 0000 0000 0000
0x0010: 0000 0000 efef 1234 5678 0000 0000 0000
0x0020: 0000 0000 0001
dnssl option (31), length 56 (7): lifetime 5s, domain(s): example.com. example.org. dom1.dom2.tld.
0x0000: 0000 0000 0005 0765 7861 6d70 6c65 0363
0x0010: 6f6d 0007 6578 616d 706c 6503 6f72 6700
0x0020: 0464 6f6d 3104 646f 6d32 0374 6c64 0000
0x0030: 0000 0000 0000
mtu option (5), length 8 (1): 100
0x0000: 0000 0000 0064
source link-address option (1), length 8 (1): b0:99:28:c8:d6:6c
0x0000: b099 28c8 d66c
advertisement interval option (7), length 8 (1): 5000ms
0x0000: 0000 0000 1388
homeagent information option (8), length 8 (1): preference 50001, lifetime 15
0x0000: 0000 c351 000f
IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::db8:1122:3344 to_ex { }]
IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::b2a8:6eff:fe0c:d4e8 > ff02::1: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener query v2 [max resp delay=10000] [gaddr :: robustness=2 qqi=60]
IP6 (hlim 1, next-header Options (0) payload length: 96) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 4 group record(s) [gaddr ff02::db8:1122:3344 is_ex { }] [gaddr ff02::1:ffcc:e546 is_ex { }] [gaddr ff02::1:ffa7:10ad is_ex { }] [gaddr ff02::1:ff00:2 is_ex { }]
IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::db8:1122:3344 to_in { }]

Binary file not shown.

6
tests/igmpv3-queries.out Normal file
View File

@ -0,0 +1,6 @@
IP 192.2.0.2 > 224.0.0.1: igmp query v3
IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 51m12s]
IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 51m12s]
IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]
IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]
IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]

BIN
tests/igmpv3-queries.pcap Normal file

Binary file not shown.

View File

@ -0,0 +1,10 @@
IP (tos 0xc0, ttl 64, id 22725, offset 0, flags [DF], proto TCP (6), length 142)
30.0.0.1.49038 > 30.0.0.2.179: Flags [P.], cksum 0xd6dc (correct), seq 1284816775:1284816865, ack 1288709908, win 29, options [nop,nop,TS val 184150022 ecr 184150021], length 90: BGP, length: 90
Update Message (2), length: 90
Origin (1), length: 1, Flags [T]: Incomplete
AS Path (2), length: 4, Flags [T]: 1
Next Hop (3), length: 4, Flags [T]: 0.0.0.0
Multi-Protocol Reach NLRI (14), length: 46, Flags [O]:
AFI: IPv6 (2), SAFI: Unicast (1)
nexthop: dead:beef::1, fe80::1ff:fe01:0, nh-length: 32, no SNPA
4:5::/64

Binary file not shown.

2
tests/msnlb.out Normal file
View File

@ -0,0 +1,2 @@
MS NLB heartbeat, host priority: 2, cluster IP: 192.168.100.80, host IP: 192.168.100.82
MS NLB heartbeat, host priority: 1, cluster IP: 192.168.100.80, host IP: 192.168.100.81

BIN
tests/msnlb.pcap Normal file

Binary file not shown.

2
tests/msnlb2.out Normal file
View File

@ -0,0 +1,2 @@
[|MS NLB]
[|MS NLB]

BIN
tests/msnlb2.pcap Normal file

Binary file not shown.

View File

@ -9,31 +9,31 @@ E..4.j@.@.!X.........p.P7X..7z.... .7......
M...M...
22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
E....l@.@. ..........p.P7X..7z.... ........
M...M...GET / HTTP/1.1
Host: localhost
User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
Accept: */*
Accept-Encoding: gzip
Accept-Language: en
Connection: Keep-Alive
M...M...GET / HTTP/1.1
Host: localhost
User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
Accept: */*
Accept-Encoding: gzip
Accept-Language: en
Connection: Keep-Alive
22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
E..4..@.@............P.p7z..7X.I.. .7......
M...M...
22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
E.....@.@..%.........P.p7z..7X.I.. ........
M...M...HTTP/1.1 200 OK
Date: Wed, 06 Jul 2005 03:57:35 GMT
Server: Apache/1.3.33
Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
ETag: "6e80f0-148a-411eb1bd"
Accept-Ranges: bytes
Content-Length: 5258
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
M...M...HTTP/1.1 200 OK
Date: Wed, 06 Jul 2005 03:57:35 GMT
Server: Apache/1.3.33
Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
ETag: "6e80f0-148a-411eb1bd"
Accept-Ranges: bytes
Content-Length: 5258
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>

View File

@ -9,31 +9,31 @@ M...M.......
M...M...
22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
..............E....l@.@. ..........p.P7X..7z.... ........
M...M...GET / HTTP/1.1
Host: localhost
User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
Accept: */*
Accept-Encoding: gzip
Accept-Language: en
Connection: Keep-Alive
M...M...GET / HTTP/1.1
Host: localhost
User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
Accept: */*
Accept-Encoding: gzip
Accept-Language: en
Connection: Keep-Alive
22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
..............E..4..@.@............P.p7z..7X.I.. .7......
M...M...
22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
..............E.....@.@..%.........P.p7z..7X.I.. ........
M...M...HTTP/1.1 200 OK
Date: Wed, 06 Jul 2005 03:57:35 GMT
Server: Apache/1.3.33
Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
ETag: "6e80f0-148a-411eb1bd"
Accept-Ranges: bytes
Content-Length: 5258
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
M...M...HTTP/1.1 200 OK
Date: Wed, 06 Jul 2005 03:57:35 GMT
Server: Apache/1.3.33
Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
ETag: "6e80f0-148a-411eb1bd"
Accept-Ranges: bytes
Content-Length: 5258
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>

16
tests/ripv1v2.out Normal file
View File

@ -0,0 +1,16 @@
IP (tos 0xc0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 52)
10.0.0.20.520 > 10.0.0.255.520:
RIPv1, Request, length: 24, routes: 1
AFI 0, 0.0.0.0, metric: 16
IP (tos 0xc0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 52)
10.0.0.20.520 > 10.0.0.255.520:
RIPv1, Response, length: 24, routes: 1
10.70.178.0, metric: 1
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 52)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Request, length: 24, routes: 1 or less
AFI 0, 0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 52)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Response, length: 24, routes: 1 or less
AFI IPv4, 10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self

BIN
tests/ripv1v2.pcap Normal file

Binary file not shown.

94
tests/ripv2_auth.out Normal file
View File

@ -0,0 +1,94 @@
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 72)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Request, length: 44, routes: 2 or less
Simple Text Authentication data: abcdefghijklmnop
AFI 0, 0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 72)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Response, length: 44, routes: 2 or less
Simple Text Authentication data: abcdefghijklmnop
AFI IPv4, 10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 92)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Request, length: 64, routes: 3 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 16, SeqNo 1339429688, MBZ 0, MBZ 0
AFI 0, 0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
Auth trailer:
0x0000: a2fe c865 f120 8808 2326 1369 d6c2 3593
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 92)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Response, length: 64, routes: 3 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 16, SeqNo 1339429692, MBZ 0, MBZ 0
AFI IPv4, 10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
Auth trailer:
0x0000: 6d21 5dd5 6d27 a6f4 8a51 e2c2 fcc2 af0f
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 96)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Request, length: 68, routes: 3 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 20, SeqNo 1339429713, MBZ 0, MBZ 0
AFI 0, 0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
Auth trailer:
0x0000: 728c 5b16 9a1b 3913 0021 a73f 7a73 bc1b
0x0010: eee0 e6a2
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 96)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Response, length: 68, routes: 3 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 20, SeqNo 1339429716, MBZ 0, MBZ 0
AFI IPv4, 10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
Auth trailer:
0x0000: 375c 8a50 f77f 543b 2425 a695 a27d 6b95
0x0010: 3375 fc89
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 108)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Request, length: 80, routes: 4 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 32, SeqNo 1339429740, MBZ 0, MBZ 0
AFI 0, 0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
Auth trailer:
0x0000: 4ae5 fb9c 9702 03b8 5a93 812d 0258 6740
0x0010: 451a bd20 cee4 8a3d a466 17a0 e550 5b4b
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 108)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Response, length: 80, routes: 4 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 32, SeqNo 1339429744, MBZ 0, MBZ 0
AFI IPv4, 10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
Auth trailer:
0x0000: 3965 b755 535a 3375 e83a 973c 60c9 1693
0x0010: f2de 8132 9e87 3f7f b763 3cb0 b3dc 3ba2
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 124)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Request, length: 96, routes: 4 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 48, SeqNo 1339429761, MBZ 0, MBZ 0
AFI 0, 0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
Auth trailer:
0x0000: a1f2 20f6 6f72 f45b e8e0 291f 2322 a198
0x0010: 1b6b 67bc 9279 7d3b 8e05 c683 8b7e 05bc
0x0020: 230c abc8 1470 8e30 5470 fb27 6fe3 4506
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 124)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Response, length: 96, routes: 4 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 48, SeqNo 1339429765, MBZ 0, MBZ 0
AFI IPv4, 10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
Auth trailer:
0x0000: 64de 1dec 3632 e210 0258 2404 0b32 a947
0x0010: aa86 59a1 fef3 9248 3115 c266 0386 f183
0x0020: 4f31 1df0 0681 e1cc ba10 b4c1 7795 9773
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 140)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Request, length: 112, routes: 5 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 64, SeqNo 1339429781, MBZ 0, MBZ 0
AFI 0, 0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
Auth trailer:
0x0000: 73ad b6e3 5fe6 07bd 0bc5 ca25 41cc 63ec
0x0010: bd06 55b1 77a4 e223 ef52 8ea2 7480 e39c
0x0020: ee51 96bd 4e35 8cb7 f185 ba49 9892 e683
0x0030: e756 788d aa23 bf90 0b01 5c2d 241d 2d8e
IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 140)
10.0.0.20.520 > 224.0.0.9.520:
RIPv2, Response, length: 112, routes: 5 or less
Auth header: Packet Len 44, Key-ID 45, Auth Data Len 64, SeqNo 1339429785, MBZ 0, MBZ 0
AFI IPv4, 10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
Auth trailer:
0x0000: ad5a 5d8a a1a8 b023 1ec3 5c1c ba6a 45fb
0x0010: bee1 5584 6b1c 724d b1b7 f02e 7365 f038
0x0020: 7558 0914 6762 00d1 a92f d499 5da2 43ad
0x0030: 202c 7a9b 8065 49ad 260b 2142 0f8d d83f

BIN
tests/ripv2_auth.pcap Normal file

Binary file not shown.

53
tests/spb.out Normal file
View File

@ -0,0 +1,53 @@
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, L1 LSP, lsp-id 2222.2222.2222.00-00, seq 0x0000000f, lifetime 1200s, length 149
IS-IS, L1 PSNP, src-id 8888.8888.8888.00, length 35
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, L1 LSP, lsp-id 2222.2222.2222.00-00, seq 0x00000010, lifetime 1200s, length 149
IS-IS, L1 PSNP, src-id 8888.8888.8888.00, length 35
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492

BIN
tests/spb.pcap Normal file

Binary file not shown.

25
tests/spb_bpduv4.out Normal file
View File

@ -0,0 +1,25 @@
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205

BIN
tests/spb_bpduv4.pcap Normal file

Binary file not shown.

73
tests/zmtp1.out Normal file
View File

@ -0,0 +1,73 @@
IP (tos 0x0, ttl 64, id 17993, offset 0, flags [DF], proto TCP (6), length 60)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [S], cksum 0xfe30 (incorrect -> 0x1a9d), seq 2523978814, win 32792, options [mss 16396,sackOK,TS val 245537399 ecr 0,nop,wscale 7], length 0
IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
127.0.0.1.33000 > 127.0.0.1.55358: Flags [S.], cksum 0xfe30 (incorrect -> 0x31b6), seq 3988083230, ack 2523978815, win 32768, options [mss 16396,sackOK,TS val 245537399 ecr 245537399,nop,wscale 7], length 0
IP (tos 0x0, ttl 64, id 17994, offset 0, flags [DF], proto TCP (6), length 52)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x19da), ack 1, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 0
IP (tos 0x0, ttl 64, id 17995, offset 0, flags [DF], proto TCP (6), length 54)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe2a (incorrect -> 0x18d0), seq 1:3, ack 1, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 2: ZMTP/1.0
frame flags+body (8-bit) length 1, flags 0x00 (-|-|-|-|-|-|-|-)
IP (tos 0x0, ttl 64, id 51304, offset 0, flags [DF], proto TCP (6), length 52)
127.0.0.1.33000 > 127.0.0.1.55358: Flags [.], cksum 0xfe28 (incorrect -> 0x19d9), ack 3, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 0
IP (tos 0x0, ttl 64, id 51305, offset 0, flags [DF], proto TCP (6), length 54)
127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe2a (incorrect -> 0x18cf), seq 1:3, ack 3, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 2: ZMTP/1.0
frame flags+body (8-bit) length 1, flags 0x00 (-|-|-|-|-|-|-|-)
IP (tos 0x0, ttl 64, id 17996, offset 0, flags [DF], proto TCP (6), length 52)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x19d6), ack 3, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 0
IP (tos 0x0, ttl 64, id 17997, offset 0, flags [DF], proto TCP (6), length 148)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe88 (incorrect -> 0x11da), seq 3:99, ack 3, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 96: ZMTP/1.0
frame flags+body (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
frame flags+body (8-bit) length 93, flags 0x00 (-|-|-|-|-|-|-|-), first 92 byte(s) of body:
0x0000: 5468 6973 2069 7320 6120 7368 6f72 7420 This.is.a.short.
0x0010: 4153 4349 4920 6d65 7373 6167 6520 666f ASCII.message.fo
0x0020: 6c6c 6f77 6564 2062 7920 6120 7368 6f72 llowed.by.a.shor
0x0030: 7420 6269 6e61 7279 206d 6573 7361 6765 t.binary.message
0x0040: 2061 6e64 2061 206c 6f6e 6765 7220 4153 .and.a.longer.AS
0x0050: 4349 4920 6d65 7373 6167 652e CII.message.
IP (tos 0x0, ttl 64, id 51306, offset 0, flags [DF], proto TCP (6), length 84)
127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc80f), seq 3:35, ack 99, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 32: ZMTP/1.0
frame flags+body (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
frame flags+body (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
0x0000: 5468 6973 2069 7320 6120 7368 6f72 7420 This.is.a.short.
0x0010: 4153 4349 4920 7265 706c 792e ASCII.reply.
IP (tos 0x0, ttl 64, id 17998, offset 0, flags [DF], proto TCP (6), length 72)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe3c (incorrect -> 0xcef8), seq 99:119, ack 35, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 20: ZMTP/1.0
frame flags+body (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
frame flags+body (8-bit) length 17, flags 0x00 (-|-|-|-|-|-|-|-), first 16 byte(s) of body:
0x0000: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f ................
IP (tos 0x0, ttl 64, id 51307, offset 0, flags [DF], proto TCP (6), length 84)
127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc7da), seq 35:67, ack 119, win 256, options [nop,nop,TS val 245537400 ecr 245537399], length 32: ZMTP/1.0
frame flags+body (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
frame flags+body (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
0x0000: 5468 6973 2069 7320 6120 7368 6f72 7420 This.is.a.short.
0x0010: 4153 4349 4920 7265 706c 792e ASCII.reply.
IP (tos 0x0, ttl 64, id 17999, offset 0, flags [DF], proto TCP (6), length 603)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0x0050 (incorrect -> 0xafc1), seq 119:670, ack 67, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 551: ZMTP/1.0
frame flags+body (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
frame flags+body (64-bit) length 540, flags 0x00 (-|-|-|-|-|-|-|-), first 128 byte(s) of body:
0x0000: 5468 6520 7175 6963 6b20 6272 6f77 6e20 The.quick.brown.
0x0010: 666f 7820 6a75 6d70 7320 6f76 6572 2074 fox.jumps.over.t
0x0020: 6865 206c 617a 7920 646f 672e 2054 6865 he.lazy.dog..The
0x0030: 2071 7569 636b 2062 726f 776e 2066 6f78 .quick.brown.fox
0x0040: 206a 756d 7073 206f 7665 7220 7468 6520 .jumps.over.the.
0x0050: 6c61 7a79 2064 6f67 2e20 5468 6520 7175 lazy.dog..The.qu
0x0060: 6963 6b20 6272 6f77 6e20 666f 7820 6a75 ick.brown.fox.ju
0x0070: 6d70 7320 6f76 6572 2074 6865 206c 617a mps.over.the.laz
IP (tos 0x0, ttl 64, id 51308, offset 0, flags [DF], proto TCP (6), length 84)
127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc592), seq 67:99, ack 670, win 256, options [nop,nop,TS val 245537400 ecr 245537400], length 32: ZMTP/1.0
frame flags+body (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
frame flags+body (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
0x0000: 5468 6973 2069 7320 6120 7368 6f72 7420 This.is.a.short.
0x0010: 4153 4349 4920 7265 706c 792e ASCII.reply.
IP (tos 0x0, ttl 64, id 18000, offset 0, flags [DF], proto TCP (6), length 52)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [F.], cksum 0xfe28 (incorrect -> 0x16d8), seq 670, ack 99, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 0
IP (tos 0x0, ttl 64, id 51309, offset 0, flags [DF], proto TCP (6), length 52)
127.0.0.1.33000 > 127.0.0.1.55358: Flags [F.], cksum 0xfe28 (incorrect -> 0x16d8), seq 99, ack 671, win 256, options [nop,nop,TS val 245537400 ecr 245537400], length 0
IP (tos 0x0, ttl 64, id 18001, offset 0, flags [DF], proto TCP (6), length 52)
127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x16d7), ack 100, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 0

BIN
tests/zmtp1.pcap Normal file

Binary file not shown.

1
udp.h
View File

@ -85,6 +85,7 @@ struct udphdr {
#define SFLOW_PORT 6343 /* http://www.sflow.org/developers/specifications.php */
#define LWAPP_DATA_PORT 12222 /* draft-ohara-capwap-lwapp-04.txt */
#define LWAPP_CONTROL_PORT 12223 /* draft-ohara-capwap-lwapp-04.txt */
#define OTV_PORT 8472 /* draft-hasmit-otv-04 */
#ifdef INET6
#define RIPNG_PORT 521 /*XXX*/

89
win32/Include/bittypes.h Normal file
View File

@ -0,0 +1,89 @@
/*
* Copyright (C) 1999 WIDE Project.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _BITTYPES_H
#define _BITTYPES_H
#ifndef HAVE_U_INT8_T
typedef unsigned char u_int8_t;
typedef signed char int8_t;
#endif /* HAVE_U_INT8_T */
#ifndef HAVE_U_INT16_T
typedef unsigned short u_int16_t;
typedef signed short int16_t;
#endif /* HAVE_U_INT16_T */
#ifndef HAVE_U_INT32_T
typedef unsigned int u_int32_t;
typedef signed int int32_t;
#endif /* HAVE_U_INT32_T */
#ifndef HAVE_U_INT64_T
#ifdef _MSC_EXTENSIONS
typedef unsigned _int64 u_int64_t;
typedef _int64 int64_t;
#else /* _MSC_EXTENSIONS */
typedef unsigned long long u_int64_t;
typedef long long int64_t;
#endif /* _MSC_EXTENSIONS */
#endif /* HAVE_U_INT64_T */
#ifndef PRId64
#ifdef _MSC_EXTENSIONS
#define PRId64 "I64d"
#else /* _MSC_EXTENSIONS */
#define PRId64 "lld"
#endif /* _MSC_EXTENSIONS */
#endif /* PRId64 */
#ifndef PRIo64
#ifdef _MSC_EXTENSIONS
#define PRIo64 "I64o"
#else /* _MSC_EXTENSIONS */
#define PRIo64 "llo"
#endif /* _MSC_EXTENSIONS */
#endif /* PRIo64 */
#ifndef PRIx64
#ifdef _MSC_EXTENSIONS
#define PRIx64 "I64x"
#else /* _MSC_EXTENSIONS */
#define PRIx64 "llx"
#endif /* _MSC_EXTENSIONS */
#endif /* PRIx64 */
#ifndef PRIu64
#ifdef _MSC_EXTENSIONS
#define PRIu64 "I64u"
#else /* _MSC_EXTENSIONS */
#define PRIu64 "llu"
#endif /* _MSC_EXTENSIONS */
#endif /* PRIu64 */
#endif /* _BITTYPES_H */