mirror of
https://github.com/zeek/zeek.git
synced 2025-10-04 15:48:19 +00:00
Changes to IPv6 ext. header parsing (addresses #795).
In response to feedback from Robin: - rename "ip_hdr" to "ip4_hdr" - pkt_hdr$ip6 is now of type "ip6_hdr" instead of "ip6_hdr_chain" - "ip6_hdr_chain" no longer contains an "ip6_hdr" field, instead it's the other way around, "ip6_hdr" contains an "ip6_hdr_chain" - other internal refactoring
This commit is contained in:
parent
f11fca588e
commit
1c1d657039
10 changed files with 491 additions and 449 deletions
|
@ -934,6 +934,10 @@ const ICMP_UNREACH_ADMIN_PROHIB = 13; ##< Adminstratively prohibited.
|
||||||
# discarders.
|
# discarders.
|
||||||
# todo::these should go into an enum to make them autodoc'able
|
# todo::these should go into an enum to make them autodoc'able
|
||||||
const IPPROTO_IP = 0; ##< Dummy for IP. [Robin] Rename to IPPROTO_IP4?
|
const IPPROTO_IP = 0; ##< Dummy for IP. [Robin] Rename to IPPROTO_IP4?
|
||||||
|
# [Jon] I'd say leave it be or remove it because from <netinet/in.h>
|
||||||
|
# IPPROTO_IPV4 can actually be the same as IPPROTO_IPIP (4)...
|
||||||
|
# IPPROTO_IP seems to be just for use with the socket API and not
|
||||||
|
# actually identifying protocol numbers in packet headers
|
||||||
const IPPROTO_ICMP = 1; ##< Control message protocol.
|
const IPPROTO_ICMP = 1; ##< Control message protocol.
|
||||||
const IPPROTO_IGMP = 2; ##< Group management protocol.
|
const IPPROTO_IGMP = 2; ##< Group management protocol.
|
||||||
const IPPROTO_IPIP = 4; ##< IP encapsulation in IP.
|
const IPPROTO_IPIP = 4; ##< IP encapsulation in IP.
|
||||||
|
@ -944,6 +948,13 @@ const IPPROTO_RAW = 255; ##< Raw IP packet.
|
||||||
|
|
||||||
# Definitions for IPv6 extension headers.
|
# Definitions for IPv6 extension headers.
|
||||||
# [Robin] Do we need a constant for unknown extensions?
|
# [Robin] Do we need a constant for unknown extensions?
|
||||||
|
# [Jon] I don't think so, these constants are just conveniences to improve
|
||||||
|
# script readability, but they also identify the actual assigned protocol
|
||||||
|
# number of the header type. If the core were to actually pass to the
|
||||||
|
# script-layer a next-header value of something we don't know about yet,
|
||||||
|
# that value would be the actual value seen in the packet, not something
|
||||||
|
# we should make up. We could provide a "KNOWN_PROTOCOLS" set for
|
||||||
|
# convenience that one could check membership against.
|
||||||
const IPPROTO_HOPOPTS = 0; ##< IPv6 hop-by-hop-options header.
|
const IPPROTO_HOPOPTS = 0; ##< IPv6 hop-by-hop-options header.
|
||||||
const IPPROTO_ROUTING = 43; ##< IPv6 routing header.
|
const IPPROTO_ROUTING = 43; ##< IPv6 routing header.
|
||||||
const IPPROTO_FRAGMENT = 44; ##< IPv6 fragment header.
|
const IPPROTO_FRAGMENT = 44; ##< IPv6 fragment header.
|
||||||
|
@ -952,20 +963,6 @@ const IPPROTO_AH = 51; ##< IPv6 authentication header.
|
||||||
const IPPROTO_NONE = 59; ##< IPv6 no next header.
|
const IPPROTO_NONE = 59; ##< IPv6 no next header.
|
||||||
const IPPROTO_DSTOPTS = 60; ##< IPv6 destination options header.
|
const IPPROTO_DSTOPTS = 60; ##< IPv6 destination options header.
|
||||||
|
|
||||||
## Values extracted from an IPv6 header.
|
|
||||||
##
|
|
||||||
## .. bro:see:: pkt_hdr ip_hdr ip6_hdr_chain ip6_hopopts ip6_dstopts ip6_routing
|
|
||||||
## ip6_fragment ip6_ah ip6_esp
|
|
||||||
type ip6_hdr: record {
|
|
||||||
class: count; ##< Traffic class.
|
|
||||||
flow: count; ##< Flow label.
|
|
||||||
len: count; ##< Payload length.
|
|
||||||
nxt: count; ##< Next header (RFC 1700 assigned number). # [Robin] That's just the IPPROTO_* constant right. Then we should refer to them.
|
|
||||||
hlim: count; ##< Hop limit.
|
|
||||||
src: addr; ##< Source address.
|
|
||||||
dst: addr; ##< Destination address.
|
|
||||||
};
|
|
||||||
|
|
||||||
## Values extracted from an IPv6 extension header's (e.g. hop-by-hop or
|
## Values extracted from an IPv6 extension header's (e.g. hop-by-hop or
|
||||||
## destination option headers) option field.
|
## destination option headers) option field.
|
||||||
##
|
##
|
||||||
|
@ -978,9 +975,10 @@ type ip6_option: record {
|
||||||
|
|
||||||
## Values extracted from an IPv6 Hop-by-Hop options extension header.
|
## Values extracted from an IPv6 Hop-by-Hop options extension header.
|
||||||
##
|
##
|
||||||
## .. bro:see:: pkt_hdr ip_hdr ip6_hdr ip6_hdr_chain ip6_option
|
## .. bro:see:: pkt_hdr ip4_hdr ip6_hdr ip6_hdr_chain ip6_option
|
||||||
type ip6_hopopts: record {
|
type ip6_hopopts: record {
|
||||||
## Next header (RFC 1700 assigned number).
|
## Protocol number of the next header (RFC 1700 et seq., IANA assigned
|
||||||
|
## number), e.g. :bro:id:`IPPROTO_ICMP`.
|
||||||
nxt: count;
|
nxt: count;
|
||||||
## Length of header in 8-octet units, excluding first unit.
|
## Length of header in 8-octet units, excluding first unit.
|
||||||
len: count;
|
len: count;
|
||||||
|
@ -990,9 +988,10 @@ type ip6_hopopts: record {
|
||||||
|
|
||||||
## Values extracted from an IPv6 Destination options extension header.
|
## Values extracted from an IPv6 Destination options extension header.
|
||||||
##
|
##
|
||||||
## .. bro:see:: pkt_hdr ip_hdr ip6_hdr ip6_hdr_chain ip6_option
|
## .. bro:see:: pkt_hdr ip4_hdr ip6_hdr ip6_hdr_chain ip6_option
|
||||||
type ip6_dstopts: record {
|
type ip6_dstopts: record {
|
||||||
## Next header (RFC 1700 assigned number).
|
## Protocol number of the next header (RFC 1700 et seq., IANA assigned
|
||||||
|
## number), e.g. :bro:id:`IPPROTO_ICMP`.
|
||||||
nxt: count;
|
nxt: count;
|
||||||
## Length of header in 8-octet units, excluding first unit.
|
## Length of header in 8-octet units, excluding first unit.
|
||||||
len: count;
|
len: count;
|
||||||
|
@ -1002,9 +1001,10 @@ type ip6_dstopts: record {
|
||||||
|
|
||||||
## Values extracted from an IPv6 Routing extension header.
|
## Values extracted from an IPv6 Routing extension header.
|
||||||
##
|
##
|
||||||
## .. bro:see:: pkt_hdr ip_hdr ip6_hdr ip6_hdr_chain
|
## .. bro:see:: pkt_hdr ip4_hdr ip6_hdr ip6_hdr_chain
|
||||||
type ip6_routing: record {
|
type ip6_routing: record {
|
||||||
## Next header (RFC 1700 assigned number).
|
## Protocol number of the next header (RFC 1700 et seq., IANA assigned
|
||||||
|
## number), e.g. :bro:id:`IPPROTO_ICMP`.
|
||||||
nxt: count;
|
nxt: count;
|
||||||
## Length of header in 8-octet units, excluding first unit.
|
## Length of header in 8-octet units, excluding first unit.
|
||||||
len: count;
|
len: count;
|
||||||
|
@ -1018,9 +1018,10 @@ type ip6_routing: record {
|
||||||
|
|
||||||
## Values extracted from an IPv6 Fragment extension header.
|
## Values extracted from an IPv6 Fragment extension header.
|
||||||
##
|
##
|
||||||
## .. bro:see:: pkt_hdr ip_hdr ip6_hdr ip6_hdr_chain
|
## .. bro:see:: pkt_hdr ip4_hdr ip6_hdr ip6_hdr_chain
|
||||||
type ip6_fragment: record {
|
type ip6_fragment: record {
|
||||||
## Next header (RFC 1700 assigned number).
|
## Protocol number of the next header (RFC 1700 et seq., IANA assigned
|
||||||
|
## number), e.g. :bro:id:`IPPROTO_ICMP`.
|
||||||
nxt: count;
|
nxt: count;
|
||||||
## 8-bit reserved field.
|
## 8-bit reserved field.
|
||||||
rsv1: count;
|
rsv1: count;
|
||||||
|
@ -1036,9 +1037,10 @@ type ip6_fragment: record {
|
||||||
|
|
||||||
## Values extracted from an IPv6 Authentication extension header.
|
## Values extracted from an IPv6 Authentication extension header.
|
||||||
##
|
##
|
||||||
## .. bro:see:: pkt_hdr ip_hdr ip6_hdr ip6_hdr_chain
|
## .. bro:see:: pkt_hdr ip4_hdr ip6_hdr ip6_hdr_chain
|
||||||
type ip6_ah: record {
|
type ip6_ah: record {
|
||||||
## Next header (RFC 1700 assigned number). # [Robin] Same as above.
|
## Protocol number of the next header (RFC 1700 et seq., IANA assigned
|
||||||
|
## number), e.g. :bro:id:`IPPROTO_ICMP`.
|
||||||
nxt: count;
|
nxt: count;
|
||||||
## Length of header in 4-octet units, excluding first two units.
|
## Length of header in 4-octet units, excluding first two units.
|
||||||
len: count;
|
len: count;
|
||||||
|
@ -1054,7 +1056,7 @@ type ip6_ah: record {
|
||||||
|
|
||||||
## Values extracted from an IPv6 ESP extension header.
|
## Values extracted from an IPv6 ESP extension header.
|
||||||
##
|
##
|
||||||
## .. bro:see:: pkt_hdr ip_hdr ip6_hdr ip6_hdr_chain
|
## .. bro:see:: pkt_hdr ip4_hdr ip6_hdr ip6_hdr_chain
|
||||||
type ip6_esp: record {
|
type ip6_esp: record {
|
||||||
## Security Parameters Index.
|
## Security Parameters Index.
|
||||||
spi: count;
|
spi: count;
|
||||||
|
@ -1064,20 +1066,24 @@ type ip6_esp: record {
|
||||||
|
|
||||||
## An IPv6 header chain.
|
## An IPv6 header chain.
|
||||||
##
|
##
|
||||||
## .. bro:see:: pkt_hdr ip_hdr
|
## .. bro:see:: pkt_hdr ip4_hdr
|
||||||
#
|
|
||||||
# [Robin] How about turning ip6_hdr_chain and ip6_hdr around, making the latter
|
|
||||||
# the top-level record that then contains an ip6_hdr_chain instance. That way, the
|
|
||||||
# pkt_hdr record would have ip4_hdr and ip6_hdr members, which seems more natural.
|
|
||||||
#
|
#
|
||||||
# [Robin] What happens to unknown extension headers? We should keep them too so that
|
# [Robin] What happens to unknown extension headers? We should keep them too so that
|
||||||
# one can at least identify what one can't analyze.
|
# one can at least identify what one can't analyze.
|
||||||
|
# [Jon] Currently, they show up as "unknown_protocol" weirds and those packets
|
||||||
|
# are skipped before any "new_packet" or "ipv6_ext_headers" events are
|
||||||
|
# raised as those depend on a connection parameter which can't be
|
||||||
|
# created since we can't parse past unknown extension headers to get
|
||||||
|
# at the upper layer protocol. Does that seem reasonable for at
|
||||||
|
# being able to identify things that couldn't be analyzed?
|
||||||
type ip6_hdr_chain: record {
|
type ip6_hdr_chain: record {
|
||||||
# [Robin] This looses the order of the headers (partially at least, even with ext_order I believe).
|
# [Robin] This looses the order of the headers (partially at least, even with ext_order I believe).
|
||||||
# Not sure how to do it differently, but can order be important for us?
|
# Not sure how to do it differently, but can order be important for us?
|
||||||
|
# [Jon] I do think order can be interesting as RFC 2460 specifies some
|
||||||
|
# ordering constraints, and I think I provide enough info in this
|
||||||
|
# record for one to reconstruct the order. Reread my new comments
|
||||||
|
# for the "ext_order" field below and see if you change your mind.
|
||||||
|
|
||||||
## The main IPv6 header.
|
|
||||||
hdr: ip6_hdr;
|
|
||||||
## Hop-by-hop option extension header.
|
## Hop-by-hop option extension header.
|
||||||
hopopts: vector of ip6_hopopts;
|
hopopts: vector of ip6_hopopts;
|
||||||
## Destination option extension headers.
|
## Destination option extension headers.
|
||||||
|
@ -1091,17 +1097,39 @@ type ip6_hdr_chain: record {
|
||||||
## Encapsulating security payload headers.
|
## Encapsulating security payload headers.
|
||||||
esp: vector of ip6_esp;
|
esp: vector of ip6_esp;
|
||||||
|
|
||||||
## Order of extension headers identified by RFC 1700 assigned numbers.
|
## Order of extension headers as seen in the packet header.
|
||||||
# [Robin] I don't understand how this works.
|
## The value at an index indicates the protocol number (RFC 1700 et seq.,
|
||||||
|
## IANA assigned number) of the header at that same position in the chain.
|
||||||
|
## e.g. if :bro:id:`IPPROTO_DSTOPTS` is at index 0 and index 2 and
|
||||||
|
## :bro:id:`IPPROTO_ROUTING` is at index 1, then the order of the headers
|
||||||
|
## in the chain is the header at index 0 of *dstopts* followed by
|
||||||
|
## the header at index 0 of *routing* and then the header at index 1 of
|
||||||
|
## *dstopts* (tracking of duplicate header types to know where to
|
||||||
|
## index into each vector would be up to the script following the chain).
|
||||||
ext_order: vector of count;
|
ext_order: vector of count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
## Values extracted from an IPv6 header.
|
||||||
|
##
|
||||||
|
## .. bro:see:: pkt_hdr ip4_hdr ip6_hdr_chain ip6_hopopts ip6_dstopts
|
||||||
|
## ip6_routing ip6_fragment ip6_ah ip6_esp
|
||||||
|
type ip6_hdr: record {
|
||||||
|
class: count; ##< Traffic class.
|
||||||
|
flow: count; ##< Flow label.
|
||||||
|
len: count; ##< Payload length.
|
||||||
|
nxt: count; ##< Protocol number of the next header
|
||||||
|
##< (RFC 1700 et seq., IANA assigned number), e.g.
|
||||||
|
##< :bro:id:`IPPROTO_ICMP`.
|
||||||
|
hlim: count; ##< Hop limit.
|
||||||
|
src: addr; ##< Source address.
|
||||||
|
dst: addr; ##< Destination address.
|
||||||
|
exts: ip6_hdr_chain;##< Extension header chain.
|
||||||
|
};
|
||||||
|
|
||||||
## Values extracted from an IPv4 header.
|
## Values extracted from an IPv4 header.
|
||||||
##
|
##
|
||||||
## .. bro:see:: pkt_hdr ip6_hdr discarder_check_ip
|
## .. bro:see:: pkt_hdr ip6_hdr discarder_check_ip
|
||||||
##
|
type ip4_hdr: record {
|
||||||
# [Robin] Rename to ip4_hdr?
|
|
||||||
type ip_hdr: record {
|
|
||||||
hl: count; ##< Header length in bytes.
|
hl: count; ##< Header length in bytes.
|
||||||
tos: count; ##< Type of service.
|
tos: count; ##< Type of service.
|
||||||
len: count; ##< Total length.
|
len: count; ##< Total length.
|
||||||
|
@ -1159,9 +1187,11 @@ type icmp_hdr: record {
|
||||||
#
|
#
|
||||||
# [Robin] Add flags saying whether it's v4/v6, tcp/udp/icmp? The day will come where
|
# [Robin] Add flags saying whether it's v4/v6, tcp/udp/icmp? The day will come where
|
||||||
# we can't infer that from the connection anymore (tunnels).
|
# we can't infer that from the connection anymore (tunnels).
|
||||||
|
# [Jon] I'm not sure what you mean, doesn't checking result of ?$ operator
|
||||||
|
# always work for finding out protocols involved?
|
||||||
type pkt_hdr: record {
|
type pkt_hdr: record {
|
||||||
ip: ip_hdr &optional; ##< The IPv4 header if an IPv4 packet.
|
ip: ip4_hdr &optional; ##< The IPv4 header if an IPv4 packet.
|
||||||
ip6: ip6_hdr_chain &optional; ##< The IPv6 header chain if an IPv6 packet.
|
ip6: ip6_hdr &optional; ##< The IPv6 header if an IPv6 packet.
|
||||||
tcp: tcp_hdr &optional; ##< The TCP header if a TCP packet.
|
tcp: tcp_hdr &optional; ##< The TCP header if a TCP packet.
|
||||||
udp: udp_hdr &optional; ##< The UDP header if a UDP packet.
|
udp: udp_hdr &optional; ##< The UDP header if a UDP packet.
|
||||||
icmp: icmp_hdr &optional; ##< The ICMP header if an ICMP packet.
|
icmp: icmp_hdr &optional; ##< The ICMP header if an ICMP packet.
|
||||||
|
|
18
src/Frag.cc
18
src/Frag.cc
|
@ -34,10 +34,13 @@ FragReassembler::FragReassembler(NetSessions* arg_s,
|
||||||
key = k;
|
key = k;
|
||||||
|
|
||||||
// [Robin] Can't we merge these two cases now?
|
// [Robin] Can't we merge these two cases now?
|
||||||
|
// [Jon] I think we'll always have to check v4 versus v6 to get the correct
|
||||||
|
// proto_hdr_len unless IP_Hdr::HdrLen itself makes a special case for
|
||||||
|
// IPv6 fragments (but that seems more confusing to me)
|
||||||
const struct ip* ip4 = ip->IP4_Hdr();
|
const struct ip* ip4 = ip->IP4_Hdr();
|
||||||
if ( ip4 )
|
if ( ip4 )
|
||||||
{
|
{
|
||||||
proto_hdr_len = ip4->ip_hl * 4; // [Robin] HdrLen?
|
proto_hdr_len = ip->HdrLen();
|
||||||
proto_hdr = new u_char[64]; // max IP header + slop
|
proto_hdr = new u_char[64]; // max IP header + slop
|
||||||
// Don't do a structure copy - need to pick up options, too.
|
// Don't do a structure copy - need to pick up options, too.
|
||||||
memcpy((void*) proto_hdr, (const void*) ip4, proto_hdr_len);
|
memcpy((void*) proto_hdr, (const void*) ip4, proto_hdr_len);
|
||||||
|
@ -247,12 +250,7 @@ void FragReassembler::BlockInserted(DataBlock* /* start_block */)
|
||||||
reassembled_pkt = new IP_Hdr(reassem4, true);
|
reassembled_pkt = new IP_Hdr(reassem4, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// [Robin] Please always check for IP version explicitly, like here
|
else if ( ((const struct ip*)pkt_start)->ip_v == 6 )
|
||||||
// do "if ... ip_v == 6", and then catch other values via
|
|
||||||
// weird/errors. Even of it shouldn't happen (because of earlier
|
|
||||||
// checks), it's better to be safe. I believe there are more places
|
|
||||||
// like this elsewhere, please check.
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
struct ip6_hdr* reassem6 = (struct ip6_hdr*) pkt_start;
|
struct ip6_hdr* reassem6 = (struct ip6_hdr*) pkt_start;
|
||||||
reassem6->ip6_plen = htons(frag_size + proto_hdr_len - 40);
|
reassem6->ip6_plen = htons(frag_size + proto_hdr_len - 40);
|
||||||
|
@ -260,6 +258,12 @@ void FragReassembler::BlockInserted(DataBlock* /* start_block */)
|
||||||
reassembled_pkt = new IP_Hdr(reassem6, true, chain);
|
reassembled_pkt = new IP_Hdr(reassem6, true, chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reporter->InternalError("bad IP version in fragment reassembly");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
DeleteTimer();
|
DeleteTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
253
src/IP.cc
253
src/IP.cc
|
@ -5,7 +5,7 @@
|
||||||
#include "Val.h"
|
#include "Val.h"
|
||||||
#include "Var.h"
|
#include "Var.h"
|
||||||
|
|
||||||
static RecordType* ip_hdr_type = 0;
|
static RecordType* ip4_hdr_type = 0;
|
||||||
static RecordType* ip6_hdr_type = 0;
|
static RecordType* ip6_hdr_type = 0;
|
||||||
static RecordType* ip6_hdr_chain_type = 0;
|
static RecordType* ip6_hdr_chain_type = 0;
|
||||||
static RecordType* ip6_option_type = 0;
|
static RecordType* ip6_option_type = 0;
|
||||||
|
@ -22,20 +22,6 @@ static inline RecordType* hdrType(RecordType*& type, const char* name)
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
RecordVal* IPv6_Hdr::BuildRecordVal() const
|
|
||||||
{
|
|
||||||
RecordVal* rv = new RecordVal(hdrType(ip6_hdr_type, "ip6_hdr"));
|
|
||||||
const struct ip6_hdr* ip6 = (const struct ip6_hdr*)data;
|
|
||||||
rv->Assign(0, new Val((ntohl(ip6->ip6_flow) & 0x0ff00000)>>20, TYPE_COUNT));
|
|
||||||
rv->Assign(1, new Val(ntohl(ip6->ip6_flow) & 0x000fffff, TYPE_COUNT));
|
|
||||||
rv->Assign(2, new Val(ntohs(ip6->ip6_plen), TYPE_COUNT));
|
|
||||||
rv->Assign(3, new Val(ip6->ip6_nxt, TYPE_COUNT));
|
|
||||||
rv->Assign(4, new Val(ip6->ip6_hlim, TYPE_COUNT));
|
|
||||||
rv->Assign(5, new AddrVal(ip6->ip6_src));
|
|
||||||
rv->Assign(6, new AddrVal(ip6->ip6_dst));
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
static VectorVal* BuildOptionsVal(const u_char* data, uint16 len)
|
static VectorVal* BuildOptionsVal(const u_char* data, uint16 len)
|
||||||
{
|
{
|
||||||
VectorVal* vv = new VectorVal(new VectorType(
|
VectorVal* vv = new VectorVal(new VectorType(
|
||||||
|
@ -71,31 +57,51 @@ static VectorVal* BuildOptionsVal(const u_char* data, uint16 len)
|
||||||
return vv;
|
return vv;
|
||||||
}
|
}
|
||||||
|
|
||||||
RecordVal* IPv6_HopOpts::BuildRecordVal() const
|
RecordVal* IPv6_Hdr::BuildRecordVal() const
|
||||||
{
|
{
|
||||||
RecordVal* rv = new RecordVal(hdrType(ip6_hopopts_type, "ip6_hopopts"));
|
RecordVal* rv = 0;
|
||||||
|
|
||||||
|
switch ( type ) {
|
||||||
|
case IPPROTO_IPV6:
|
||||||
|
{
|
||||||
|
rv = new RecordVal(hdrType(ip6_hdr_type, "ip6_hdr"));
|
||||||
|
const struct ip6_hdr* ip6 = (const struct ip6_hdr*)data;
|
||||||
|
rv->Assign(0, new Val((ntohl(ip6->ip6_flow) & 0x0ff00000)>>20, TYPE_COUNT));
|
||||||
|
rv->Assign(1, new Val(ntohl(ip6->ip6_flow) & 0x000fffff, TYPE_COUNT));
|
||||||
|
rv->Assign(2, new Val(ntohs(ip6->ip6_plen), TYPE_COUNT));
|
||||||
|
rv->Assign(3, new Val(ip6->ip6_nxt, TYPE_COUNT));
|
||||||
|
rv->Assign(4, new Val(ip6->ip6_hlim, TYPE_COUNT));
|
||||||
|
rv->Assign(5, new AddrVal(ip6->ip6_src));
|
||||||
|
rv->Assign(6, new AddrVal(ip6->ip6_dst));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IPPROTO_HOPOPTS:
|
||||||
|
{
|
||||||
|
rv = new RecordVal(hdrType(ip6_hopopts_type, "ip6_hopopts"));
|
||||||
const struct ip6_hbh* hbh = (const struct ip6_hbh*)data;
|
const struct ip6_hbh* hbh = (const struct ip6_hbh*)data;
|
||||||
rv->Assign(0, new Val(hbh->ip6h_nxt, TYPE_COUNT));
|
rv->Assign(0, new Val(hbh->ip6h_nxt, TYPE_COUNT));
|
||||||
rv->Assign(1, new Val(hbh->ip6h_len, TYPE_COUNT));
|
rv->Assign(1, new Val(hbh->ip6h_len, TYPE_COUNT));
|
||||||
uint16 off = 2 * sizeof(uint8);
|
uint16 off = 2 * sizeof(uint8);
|
||||||
rv->Assign(2, BuildOptionsVal(data + off, Length() - off));
|
rv->Assign(2, BuildOptionsVal(data + off, Length() - off));
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
RecordVal* IPv6_DstOpts::BuildRecordVal() const
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IPPROTO_DSTOPTS:
|
||||||
{
|
{
|
||||||
RecordVal* rv = new RecordVal(hdrType(ip6_dstopts_type, "ip6_dstopts"));
|
rv = new RecordVal(hdrType(ip6_dstopts_type, "ip6_dstopts"));
|
||||||
const struct ip6_dest* dst = (const struct ip6_dest*)data;
|
const struct ip6_dest* dst = (const struct ip6_dest*)data;
|
||||||
rv->Assign(0, new Val(dst->ip6d_nxt, TYPE_COUNT));
|
rv->Assign(0, new Val(dst->ip6d_nxt, TYPE_COUNT));
|
||||||
rv->Assign(1, new Val(dst->ip6d_len, TYPE_COUNT));
|
rv->Assign(1, new Val(dst->ip6d_len, TYPE_COUNT));
|
||||||
uint16 off = 2 * sizeof(uint8);
|
uint16 off = 2 * sizeof(uint8);
|
||||||
rv->Assign(2, BuildOptionsVal(data + off, Length() - off));
|
rv->Assign(2, BuildOptionsVal(data + off, Length() - off));
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
RecordVal* IPv6_Routing::BuildRecordVal() const
|
case IPPROTO_ROUTING:
|
||||||
{
|
{
|
||||||
RecordVal* rv = new RecordVal(hdrType(ip6_routing_type, "ip6_routing"));
|
rv = new RecordVal(hdrType(ip6_routing_type, "ip6_routing"));
|
||||||
const struct ip6_rthdr* rt = (const struct ip6_rthdr*)data;
|
const struct ip6_rthdr* rt = (const struct ip6_rthdr*)data;
|
||||||
rv->Assign(0, new Val(rt->ip6r_nxt, TYPE_COUNT));
|
rv->Assign(0, new Val(rt->ip6r_nxt, TYPE_COUNT));
|
||||||
rv->Assign(1, new Val(rt->ip6r_len, TYPE_COUNT));
|
rv->Assign(1, new Val(rt->ip6r_len, TYPE_COUNT));
|
||||||
|
@ -103,12 +109,12 @@ RecordVal* IPv6_Routing::BuildRecordVal() const
|
||||||
rv->Assign(3, new Val(rt->ip6r_segleft, TYPE_COUNT));
|
rv->Assign(3, new Val(rt->ip6r_segleft, TYPE_COUNT));
|
||||||
uint16 off = 4 * sizeof(uint8);
|
uint16 off = 4 * sizeof(uint8);
|
||||||
rv->Assign(4, new StringVal(new BroString(data + off, Length() - off, 1)));
|
rv->Assign(4, new StringVal(new BroString(data + off, Length() - off, 1)));
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
RecordVal* IPv6_Fragment::BuildRecordVal() const
|
case IPPROTO_FRAGMENT:
|
||||||
{
|
{
|
||||||
RecordVal* rv = new RecordVal(hdrType(ip6_fragment_type, "ip6_fragment"));
|
rv = new RecordVal(hdrType(ip6_fragment_type, "ip6_fragment"));
|
||||||
const struct ip6_frag* frag = (const struct ip6_frag*)data;
|
const struct ip6_frag* frag = (const struct ip6_frag*)data;
|
||||||
rv->Assign(0, new Val(frag->ip6f_nxt, TYPE_COUNT));
|
rv->Assign(0, new Val(frag->ip6f_nxt, TYPE_COUNT));
|
||||||
rv->Assign(1, new Val(frag->ip6f_reserved, TYPE_COUNT));
|
rv->Assign(1, new Val(frag->ip6f_reserved, TYPE_COUNT));
|
||||||
|
@ -116,12 +122,12 @@ RecordVal* IPv6_Fragment::BuildRecordVal() const
|
||||||
rv->Assign(3, new Val((ntohs(frag->ip6f_offlg) & 0x0006)>>1, TYPE_COUNT));
|
rv->Assign(3, new Val((ntohs(frag->ip6f_offlg) & 0x0006)>>1, TYPE_COUNT));
|
||||||
rv->Assign(4, new Val(ntohs(frag->ip6f_offlg) & 0x0001, TYPE_BOOL));
|
rv->Assign(4, new Val(ntohs(frag->ip6f_offlg) & 0x0001, TYPE_BOOL));
|
||||||
rv->Assign(5, new Val(ntohl(frag->ip6f_ident), TYPE_COUNT));
|
rv->Assign(5, new Val(ntohl(frag->ip6f_ident), TYPE_COUNT));
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
RecordVal* IPv6_AH::BuildRecordVal() const
|
case IPPROTO_AH:
|
||||||
{
|
{
|
||||||
RecordVal* rv = new RecordVal(hdrType(ip6_ah_type, "ip6_ah"));
|
rv = new RecordVal(hdrType(ip6_ah_type, "ip6_ah"));
|
||||||
rv->Assign(0, new Val(((ip6_ext*)data)->ip6e_nxt, TYPE_COUNT));
|
rv->Assign(0, new Val(((ip6_ext*)data)->ip6e_nxt, TYPE_COUNT));
|
||||||
rv->Assign(1, new Val(((ip6_ext*)data)->ip6e_len, TYPE_COUNT));
|
rv->Assign(1, new Val(((ip6_ext*)data)->ip6e_len, TYPE_COUNT));
|
||||||
rv->Assign(2, new Val(ntohs(((uint16*)data)[1]), TYPE_COUNT));
|
rv->Assign(2, new Val(ntohs(((uint16*)data)[1]), TYPE_COUNT));
|
||||||
|
@ -129,15 +135,22 @@ RecordVal* IPv6_AH::BuildRecordVal() const
|
||||||
rv->Assign(4, new Val(ntohl(((uint32*)data)[2]), TYPE_COUNT));
|
rv->Assign(4, new Val(ntohl(((uint32*)data)[2]), TYPE_COUNT));
|
||||||
uint16 off = 3 * sizeof(uint32);
|
uint16 off = 3 * sizeof(uint32);
|
||||||
rv->Assign(5, new StringVal(new BroString(data + off, Length() - off, 1)));
|
rv->Assign(5, new StringVal(new BroString(data + off, Length() - off, 1)));
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
RecordVal* IPv6_ESP::BuildRecordVal() const
|
case IPPROTO_ESP:
|
||||||
{
|
{
|
||||||
RecordVal* rv = new RecordVal(hdrType(ip6_esp_type, "ip6_esp"));
|
rv = new RecordVal(hdrType(ip6_esp_type, "ip6_esp"));
|
||||||
const uint32* esp = (const uint32*)data;
|
const uint32* esp = (const uint32*)data;
|
||||||
rv->Assign(0, new Val(ntohl(esp[0]), TYPE_COUNT));
|
rv->Assign(0, new Val(ntohl(esp[0]), TYPE_COUNT));
|
||||||
rv->Assign(1, new Val(ntohl(esp[1]), TYPE_COUNT));
|
rv->Assign(1, new Val(ntohl(esp[1]), TYPE_COUNT));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,22 +158,9 @@ RecordVal* IP_Hdr::BuildIPHdrVal() const
|
||||||
{
|
{
|
||||||
RecordVal* rval = 0;
|
RecordVal* rval = 0;
|
||||||
|
|
||||||
if ( ! ip_hdr_type )
|
|
||||||
{
|
|
||||||
ip_hdr_type = internal_type("ip_hdr")->AsRecordType();
|
|
||||||
ip6_hdr_type = internal_type("ip6_hdr")->AsRecordType();
|
|
||||||
ip6_hdr_chain_type = internal_type("ip6_hdr_chain")->AsRecordType();
|
|
||||||
ip6_hopopts_type = internal_type("ip6_hopopts")->AsRecordType();
|
|
||||||
ip6_dstopts_type = internal_type("ip6_dstopts")->AsRecordType();
|
|
||||||
ip6_routing_type = internal_type("ip6_routing")->AsRecordType();
|
|
||||||
ip6_fragment_type = internal_type("ip6_fragment")->AsRecordType();
|
|
||||||
ip6_ah_type = internal_type("ip6_ah")->AsRecordType();
|
|
||||||
ip6_esp_type = internal_type("ip6_esp")->AsRecordType();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ip4 )
|
if ( ip4 )
|
||||||
{
|
{
|
||||||
rval = new RecordVal(ip_hdr_type);
|
rval = new RecordVal(hdrType(ip4_hdr_type, "ip4_hdr"));
|
||||||
rval->Assign(0, new Val(ip4->ip_hl * 4, TYPE_COUNT));
|
rval->Assign(0, new Val(ip4->ip_hl * 4, TYPE_COUNT));
|
||||||
rval->Assign(1, new Val(ip4->ip_tos, TYPE_COUNT));
|
rval->Assign(1, new Val(ip4->ip_tos, TYPE_COUNT));
|
||||||
rval->Assign(2, new Val(ntohs(ip4->ip_len), TYPE_COUNT));
|
rval->Assign(2, new Val(ntohs(ip4->ip_len), TYPE_COUNT));
|
||||||
|
@ -172,55 +172,8 @@ RecordVal* IP_Hdr::BuildIPHdrVal() const
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rval = new RecordVal(ip6_hdr_chain_type);
|
rval = ((*ip6_hdrs)[0])->BuildRecordVal();
|
||||||
|
rval->Assign(7, ip6_hdrs->BuildRecordVal());
|
||||||
VectorVal* hopopts = new VectorVal(new VectorType(ip6_hopopts_type->Ref()));
|
|
||||||
VectorVal* dstopts = new VectorVal(new VectorType(ip6_dstopts_type->Ref()));
|
|
||||||
VectorVal* routing = new VectorVal(new VectorType(ip6_routing_type->Ref()));
|
|
||||||
VectorVal* fragment = new VectorVal(new VectorType(ip6_fragment_type->Ref()));
|
|
||||||
VectorVal* ah = new VectorVal(new VectorType(ip6_ah_type->Ref()));
|
|
||||||
VectorVal* esp = new VectorVal(new VectorType(ip6_esp_type->Ref()));
|
|
||||||
VectorVal* order = new VectorVal(new VectorType(base_type(TYPE_COUNT)));
|
|
||||||
|
|
||||||
for ( size_t i = 1; i < ip6_hdrs->Size(); ++i )
|
|
||||||
{
|
|
||||||
RecordVal* v = ((*ip6_hdrs)[i])->BuildRecordVal();
|
|
||||||
uint8 type = ((*ip6_hdrs)[i])->Type();
|
|
||||||
switch (type) {
|
|
||||||
case IPPROTO_HOPOPTS:
|
|
||||||
hopopts->Assign(hopopts->Size(), v, 0);
|
|
||||||
break;
|
|
||||||
case IPPROTO_ROUTING:
|
|
||||||
routing->Assign(routing->Size(), v, 0);
|
|
||||||
break;
|
|
||||||
case IPPROTO_DSTOPTS:
|
|
||||||
dstopts->Assign(dstopts->Size(), v, 0);
|
|
||||||
break;
|
|
||||||
case IPPROTO_FRAGMENT:
|
|
||||||
fragment->Assign(fragment->Size(), v, 0);
|
|
||||||
break;
|
|
||||||
case IPPROTO_AH:
|
|
||||||
ah->Assign(ah->Size(), v, 0);
|
|
||||||
break;
|
|
||||||
case IPPROTO_ESP:
|
|
||||||
esp->Assign(esp->Size(), v, 0);
|
|
||||||
break;
|
|
||||||
case IPPROTO_IPV6:
|
|
||||||
default:
|
|
||||||
reporter->InternalError("pkt_hdr assigned bad header %d", type);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
order->Assign(i-1, new Val(type, TYPE_COUNT), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
rval->Assign(0, ((*ip6_hdrs)[0])->BuildRecordVal());
|
|
||||||
rval->Assign(1, hopopts);
|
|
||||||
rval->Assign(2, dstopts);
|
|
||||||
rval->Assign(3, routing);
|
|
||||||
rval->Assign(4, fragment);
|
|
||||||
rval->Assign(5, ah);
|
|
||||||
rval->Assign(6, esp);
|
|
||||||
rval->Assign(7, order);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
|
@ -308,34 +261,6 @@ RecordVal* IP_Hdr::BuildPktHdrVal() const
|
||||||
return pkt_hdr;
|
return pkt_hdr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline IPv6_Hdr* getIPv6Header(uint8 type, const u_char* d,
|
|
||||||
bool set_next = false, uint16 nxt = 0)
|
|
||||||
{
|
|
||||||
switch (type) {
|
|
||||||
case IPPROTO_IPV6:
|
|
||||||
return set_next ? new IPv6_Hdr(d, nxt) : new IPv6_Hdr(d);
|
|
||||||
case IPPROTO_HOPOPTS:
|
|
||||||
return set_next ? new IPv6_HopOpts(d, nxt) : new IPv6_HopOpts(d);
|
|
||||||
case IPPROTO_ROUTING:
|
|
||||||
return set_next ? new IPv6_Routing(d, nxt) : new IPv6_Routing(d);
|
|
||||||
case IPPROTO_DSTOPTS:
|
|
||||||
return set_next ? new IPv6_DstOpts(d, nxt) : new IPv6_DstOpts(d);
|
|
||||||
case IPPROTO_FRAGMENT:
|
|
||||||
return set_next ? new IPv6_Fragment(d, nxt) : new IPv6_Fragment(d);
|
|
||||||
case IPPROTO_AH:
|
|
||||||
return set_next ? new IPv6_AH(d, nxt) : new IPv6_AH(d);
|
|
||||||
case IPPROTO_ESP:
|
|
||||||
return new IPv6_ESP(d); // never able to set ESP header's next
|
|
||||||
default:
|
|
||||||
// should never get here if calls are protected by isIPv6ExtHeader()
|
|
||||||
reporter->InternalError("Unknown IPv6 header type: %d", type);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// can't be reached
|
|
||||||
assert(false);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool isIPv6ExtHeader(uint8 type)
|
static inline bool isIPv6ExtHeader(uint8 type)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@ -361,12 +286,86 @@ void IPv6_Hdr_Chain::Init(const struct ip6_hdr* ip6, bool set_next, uint16 next)
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
current_type = next_type;
|
current_type = next_type;
|
||||||
chain.push_back(getIPv6Header(current_type, hdrs, set_next, next));
|
IPv6_Hdr* p = new IPv6_Hdr(current_type, hdrs);
|
||||||
next_type = chain[chain.size()-1]->NextHdr();
|
|
||||||
uint16 len = chain[chain.size()-1]->Length();
|
next_type = p->NextHdr();
|
||||||
|
uint16 len = p->Length();
|
||||||
|
|
||||||
|
if ( set_next && next_type == IPPROTO_FRAGMENT )
|
||||||
|
{
|
||||||
|
p->ChangeNext(next);
|
||||||
|
next_type = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
chain.push_back(p);
|
||||||
|
|
||||||
hdrs += len;
|
hdrs += len;
|
||||||
length += len;
|
length += len;
|
||||||
} while ( current_type != IPPROTO_FRAGMENT &&
|
} while ( current_type != IPPROTO_FRAGMENT &&
|
||||||
current_type != IPPROTO_ESP &&
|
current_type != IPPROTO_ESP &&
|
||||||
isIPv6ExtHeader(next_type) );
|
isIPv6ExtHeader(next_type) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RecordVal* IPv6_Hdr_Chain::BuildRecordVal() const
|
||||||
|
{
|
||||||
|
if ( ! ip6_hdr_chain_type )
|
||||||
|
{
|
||||||
|
ip6_hdr_chain_type = internal_type("ip6_hdr_chain")->AsRecordType();
|
||||||
|
ip6_hopopts_type = internal_type("ip6_hopopts")->AsRecordType();
|
||||||
|
ip6_dstopts_type = internal_type("ip6_dstopts")->AsRecordType();
|
||||||
|
ip6_routing_type = internal_type("ip6_routing")->AsRecordType();
|
||||||
|
ip6_fragment_type = internal_type("ip6_fragment")->AsRecordType();
|
||||||
|
ip6_ah_type = internal_type("ip6_ah")->AsRecordType();
|
||||||
|
ip6_esp_type = internal_type("ip6_esp")->AsRecordType();
|
||||||
|
}
|
||||||
|
|
||||||
|
RecordVal* rval = new RecordVal(ip6_hdr_chain_type);
|
||||||
|
|
||||||
|
VectorVal* hopopts = new VectorVal(new VectorType(ip6_hopopts_type->Ref()));
|
||||||
|
VectorVal* dstopts = new VectorVal(new VectorType(ip6_dstopts_type->Ref()));
|
||||||
|
VectorVal* routing = new VectorVal(new VectorType(ip6_routing_type->Ref()));
|
||||||
|
VectorVal* fragment = new VectorVal(new VectorType(ip6_fragment_type->Ref()));
|
||||||
|
VectorVal* ah = new VectorVal(new VectorType(ip6_ah_type->Ref()));
|
||||||
|
VectorVal* esp = new VectorVal(new VectorType(ip6_esp_type->Ref()));
|
||||||
|
VectorVal* order = new VectorVal(new VectorType(base_type(TYPE_COUNT)));
|
||||||
|
|
||||||
|
for ( size_t i = 1; i < chain.size(); ++i )
|
||||||
|
{
|
||||||
|
RecordVal* v = chain[i]->BuildRecordVal();
|
||||||
|
uint8 type = chain[i]->Type();
|
||||||
|
switch (type) {
|
||||||
|
case IPPROTO_HOPOPTS:
|
||||||
|
hopopts->Assign(hopopts->Size(), v, 0);
|
||||||
|
break;
|
||||||
|
case IPPROTO_ROUTING:
|
||||||
|
routing->Assign(routing->Size(), v, 0);
|
||||||
|
break;
|
||||||
|
case IPPROTO_DSTOPTS:
|
||||||
|
dstopts->Assign(dstopts->Size(), v, 0);
|
||||||
|
break;
|
||||||
|
case IPPROTO_FRAGMENT:
|
||||||
|
fragment->Assign(fragment->Size(), v, 0);
|
||||||
|
break;
|
||||||
|
case IPPROTO_AH:
|
||||||
|
ah->Assign(ah->Size(), v, 0);
|
||||||
|
break;
|
||||||
|
case IPPROTO_ESP:
|
||||||
|
esp->Assign(esp->Size(), v, 0);
|
||||||
|
break;
|
||||||
|
case IPPROTO_IPV6:
|
||||||
|
default:
|
||||||
|
reporter->InternalError("pkt_hdr assigned bad header %d", type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
order->Assign(i-1, new Val(type, TYPE_COUNT), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
rval->Assign(0, hopopts);
|
||||||
|
rval->Assign(1, dstopts);
|
||||||
|
rval->Assign(2, routing);
|
||||||
|
rval->Assign(3, fragment);
|
||||||
|
rval->Assign(4, ah);
|
||||||
|
rval->Assign(5, esp);
|
||||||
|
rval->Assign(6, order);
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
188
src/IP.h
188
src/IP.h
|
@ -22,56 +22,94 @@
|
||||||
// members: we're creating/allocating those for every IPv6 packet, right?
|
// members: we're creating/allocating those for every IPv6 packet, right?
|
||||||
//
|
//
|
||||||
// Any idea how to avoid these?
|
// Any idea how to avoid these?
|
||||||
|
//
|
||||||
|
// [Jon] Seems fair enough to just remove the virtual method concern at this
|
||||||
|
// point by replacing the class hierarchy with some inline functions that
|
||||||
|
// do switch statements. I don't know what to do about the
|
||||||
|
// vector<IPv6_hdr*> and ip6_hdrs data members being allocated for every
|
||||||
|
// IPv6 packet, maybe it's too early to try to optimize before we know
|
||||||
|
// the frequency at which extension headers appear in real IPv6 traffic?
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for IPv6 header/extensions.
|
* Base class for IPv6 header/extensions.
|
||||||
*/
|
*/
|
||||||
class IPv6_Hdr {
|
class IPv6_Hdr {
|
||||||
public:
|
public:
|
||||||
IPv6_Hdr() : type(0), data(0) {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Construct the main IPv6 header.
|
|
||||||
*/
|
|
||||||
IPv6_Hdr(const u_char* d) : type(IPPROTO_IPV6), data(d) {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Construct the main IPv6 header, but replace the next protocol field
|
|
||||||
* if it points to a fragment.
|
|
||||||
*/
|
|
||||||
IPv6_Hdr(const u_char* d, uint16 nxt) : type(IPPROTO_IPV6), data(d)
|
|
||||||
{
|
|
||||||
// [Robin]. This looks potentially dangerous as it's changing
|
|
||||||
// the data passed in, which the caller may not realize. From
|
|
||||||
// quick look, it's only used from Frag.cc, so that may be
|
|
||||||
// ok. But could we guard against accidental use somehome?
|
|
||||||
// Like making this protected and then declare a friend; or a
|
|
||||||
// seperate method ChangeNext(). (I saw it's used by derived
|
|
||||||
// classes so not sure wehat works best.)
|
|
||||||
if ( ((ip6_hdr*)data)->ip6_nxt == IPPROTO_FRAGMENT )
|
|
||||||
((ip6_hdr*)data)->ip6_nxt = nxt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct an IPv6 header or extension header from assigned type number.
|
* Construct an IPv6 header or extension header from assigned type number.
|
||||||
*/
|
*/
|
||||||
IPv6_Hdr(uint8 t, const u_char* d) : type(t), data(d) {}
|
IPv6_Hdr(uint8 t, const u_char* d) : type(t), data(d) {}
|
||||||
|
|
||||||
virtual ~IPv6_Hdr() {}
|
/**
|
||||||
|
* Replace the value of the next protocol field.
|
||||||
|
*/
|
||||||
|
void ChangeNext(uint8 next_type)
|
||||||
|
{
|
||||||
|
switch ( type ) {
|
||||||
|
case IPPROTO_IPV6:
|
||||||
|
((ip6_hdr*)data)->ip6_nxt = next_type;
|
||||||
|
break;
|
||||||
|
case IPPROTO_HOPOPTS:
|
||||||
|
case IPPROTO_DSTOPTS:
|
||||||
|
case IPPROTO_ROUTING:
|
||||||
|
case IPPROTO_FRAGMENT:
|
||||||
|
case IPPROTO_AH:
|
||||||
|
((ip6_ext*)data)->ip6e_nxt = next_type;
|
||||||
|
break;
|
||||||
|
case IPPROTO_ESP:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
~IPv6_Hdr() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the assigned IPv6 extension header type number of the header
|
* Returns the assigned IPv6 extension header type number of the header
|
||||||
* that immediately follows this one.
|
* that immediately follows this one.
|
||||||
*/
|
*/
|
||||||
virtual uint8 NextHdr() const { return ((ip6_hdr*)data)->ip6_nxt; }
|
uint8 NextHdr() const
|
||||||
|
{
|
||||||
|
switch ( type ) {
|
||||||
|
case IPPROTO_IPV6:
|
||||||
|
return ((ip6_hdr*)data)->ip6_nxt;
|
||||||
|
case IPPROTO_HOPOPTS:
|
||||||
|
case IPPROTO_DSTOPTS:
|
||||||
|
case IPPROTO_ROUTING:
|
||||||
|
case IPPROTO_FRAGMENT:
|
||||||
|
case IPPROTO_AH:
|
||||||
|
return ((ip6_ext*)data)->ip6e_nxt;
|
||||||
|
case IPPROTO_ESP:
|
||||||
|
default:
|
||||||
|
return IPPROTO_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the length of the header in bytes.
|
* Returns the length of the header in bytes.
|
||||||
*/
|
*/
|
||||||
virtual uint16 Length() const { return 40; }
|
uint16 Length() const
|
||||||
|
{
|
||||||
|
switch ( type ) {
|
||||||
|
case IPPROTO_IPV6:
|
||||||
|
return 40;
|
||||||
|
case IPPROTO_HOPOPTS:
|
||||||
|
case IPPROTO_DSTOPTS:
|
||||||
|
case IPPROTO_ROUTING:
|
||||||
|
return 8 + 8 * ((ip6_ext*)data)->ip6e_len;
|
||||||
|
case IPPROTO_FRAGMENT:
|
||||||
|
return 8;
|
||||||
|
case IPPROTO_AH:
|
||||||
|
return 8 + 4 * ((ip6_ext*)data)->ip6e_len;
|
||||||
|
case IPPROTO_ESP:
|
||||||
|
return 8; //encrypted payload begins after 8 bytes
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the RFC 1700 assigned number indicating the header type.
|
* Returns the RFC 1700 et seq. IANA assigned number for the header.
|
||||||
*/
|
*/
|
||||||
uint8 Type() const { return type; }
|
uint8 Type() const { return type; }
|
||||||
|
|
||||||
|
@ -83,75 +121,13 @@ public:
|
||||||
/**
|
/**
|
||||||
* Returns the script-layer record representation of the header.
|
* Returns the script-layer record representation of the header.
|
||||||
*/
|
*/
|
||||||
virtual RecordVal* BuildRecordVal() const;
|
RecordVal* BuildRecordVal() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
uint8 type;
|
uint8 type;
|
||||||
const u_char* data;
|
const u_char* data;
|
||||||
};
|
};
|
||||||
|
|
||||||
class IPv6_Ext : public IPv6_Hdr {
|
|
||||||
public:
|
|
||||||
IPv6_Ext(uint16 type, const u_char* d) : IPv6_Hdr(type, d) {}
|
|
||||||
IPv6_Ext(uint16 type, const u_char* d, uint16 nxt) : IPv6_Hdr(type, d)
|
|
||||||
{
|
|
||||||
if ( ((ip6_ext*)data)->ip6e_nxt == IPPROTO_FRAGMENT )
|
|
||||||
((ip6_ext*)data)->ip6e_nxt = nxt;
|
|
||||||
}
|
|
||||||
uint8 NextHdr() const { return ((ip6_ext*)data)->ip6e_nxt; }
|
|
||||||
virtual uint16 Length() const = 0;
|
|
||||||
virtual RecordVal* BuildRecordVal() const = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IPv6_HopOpts : public IPv6_Ext {
|
|
||||||
public:
|
|
||||||
IPv6_HopOpts(const u_char* d) : IPv6_Ext(IPPROTO_HOPOPTS, d) {}
|
|
||||||
IPv6_HopOpts(const u_char* d, uint16 n) : IPv6_Ext(IPPROTO_HOPOPTS, d, n) {}
|
|
||||||
uint16 Length() const { return 8 + 8 * ((ip6_ext*)data)->ip6e_len; }
|
|
||||||
RecordVal* BuildRecordVal() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IPv6_DstOpts : public IPv6_Ext {
|
|
||||||
public:
|
|
||||||
IPv6_DstOpts(const u_char* d) : IPv6_Ext(IPPROTO_DSTOPTS, d) {}
|
|
||||||
IPv6_DstOpts(const u_char* d, uint16 n) : IPv6_Ext(IPPROTO_DSTOPTS, d, n) {}
|
|
||||||
uint16 Length() const { return 8 + 8 * ((ip6_ext*)data)->ip6e_len; }
|
|
||||||
RecordVal* BuildRecordVal() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IPv6_Routing : public IPv6_Ext {
|
|
||||||
public:
|
|
||||||
IPv6_Routing(const u_char* d) : IPv6_Ext(IPPROTO_ROUTING, d) {}
|
|
||||||
IPv6_Routing(const u_char* d, uint16 n) : IPv6_Ext(IPPROTO_ROUTING, d, n) {}
|
|
||||||
uint16 Length() const { return 8 + 8 * ((ip6_ext*)data)->ip6e_len; }
|
|
||||||
RecordVal* BuildRecordVal() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IPv6_Fragment : public IPv6_Ext {
|
|
||||||
public:
|
|
||||||
IPv6_Fragment(const u_char* d) : IPv6_Ext(IPPROTO_FRAGMENT, d) {}
|
|
||||||
IPv6_Fragment(const u_char* d, uint16 n) : IPv6_Ext(IPPROTO_FRAGMENT, d, n)
|
|
||||||
{}
|
|
||||||
uint16 Length() const { return 8; }
|
|
||||||
RecordVal* BuildRecordVal() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IPv6_AH : public IPv6_Ext {
|
|
||||||
public:
|
|
||||||
IPv6_AH(const u_char* d) : IPv6_Ext(IPPROTO_AH, d) {}
|
|
||||||
IPv6_AH(const u_char* d, uint16 n) : IPv6_Ext(IPPROTO_AH, d, n) {}
|
|
||||||
uint16 Length() const { return 8 + 4 * ((ip6_ext*)data)->ip6e_len; }
|
|
||||||
RecordVal* BuildRecordVal() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IPv6_ESP : public IPv6_Ext {
|
|
||||||
public:
|
|
||||||
IPv6_ESP(const u_char* d) : IPv6_Ext(IPPROTO_ESP, d) {}
|
|
||||||
// encrypted payload begins after 8 bytes
|
|
||||||
uint16 Length() const { return 8; }
|
|
||||||
RecordVal* BuildRecordVal() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IPv6_Hdr_Chain {
|
class IPv6_Hdr_Chain {
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -159,13 +135,6 @@ public:
|
||||||
*/
|
*/
|
||||||
IPv6_Hdr_Chain(const struct ip6_hdr* ip6) { Init(ip6, false); }
|
IPv6_Hdr_Chain(const struct ip6_hdr* ip6) { Init(ip6, false); }
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the header chain from an IPv6 header structure, and replaces
|
|
||||||
* the first next protocol pointer field that points to a fragment header.
|
|
||||||
*/
|
|
||||||
IPv6_Hdr_Chain(const struct ip6_hdr* ip6, uint16 next)
|
|
||||||
{ Init(ip6, true, next); }
|
|
||||||
|
|
||||||
~IPv6_Hdr_Chain()
|
~IPv6_Hdr_Chain()
|
||||||
{ for ( size_t i = 0; i < chain.size(); ++i ) delete chain[i]; }
|
{ for ( size_t i = 0; i < chain.size(); ++i ) delete chain[i]; }
|
||||||
|
|
||||||
|
@ -218,7 +187,24 @@ public:
|
||||||
{ return IsFragment() ?
|
{ return IsFragment() ?
|
||||||
(ntohs(GetFragHdr()->ip6f_offlg) & 0x0001) != 0 : 0; }
|
(ntohs(GetFragHdr()->ip6f_offlg) & 0x0001) != 0 : 0; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an ip6_hdr_chain RecordVal that includes script-layer
|
||||||
|
* representation of all extension headers in the chain.
|
||||||
|
*/
|
||||||
|
RecordVal* BuildRecordVal() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
// for access to protected ctor that changes next header values that
|
||||||
|
// point to a fragment
|
||||||
|
friend class FragReassembler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the header chain from an IPv6 header structure, and replaces
|
||||||
|
* the first next protocol pointer field that points to a fragment header.
|
||||||
|
*/
|
||||||
|
IPv6_Hdr_Chain(const struct ip6_hdr* ip6, uint16 next)
|
||||||
|
{ Init(ip6, true, next); }
|
||||||
|
|
||||||
void Init(const struct ip6_hdr* ip6, bool set_next, uint16 next = 0);
|
void Init(const struct ip6_hdr* ip6, bool set_next, uint16 next = 0);
|
||||||
|
|
||||||
vector<IPv6_Hdr*> chain;
|
vector<IPv6_Hdr*> chain;
|
||||||
|
@ -237,8 +223,12 @@ public:
|
||||||
ip6 = (const struct ip6_hdr*)p;
|
ip6 = (const struct ip6_hdr*)p;
|
||||||
ip6_hdrs = new IPv6_Hdr_Chain(ip6);
|
ip6_hdrs = new IPv6_Hdr_Chain(ip6);
|
||||||
}
|
}
|
||||||
else if ( arg_del )
|
else
|
||||||
|
{
|
||||||
|
if ( arg_del )
|
||||||
delete [] p;
|
delete [] p;
|
||||||
|
reporter->InternalError("bad IP version in IP_Hdr ctor");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IP_Hdr(const struct ip* arg_ip4, bool arg_del)
|
IP_Hdr(const struct ip* arg_ip4, bool arg_del)
|
||||||
|
|
|
@ -28,8 +28,11 @@ PacketSortElement::PacketSortElement(PktSrc* arg_src,
|
||||||
const struct ip* ip = (const struct ip*) (pkt + hdr_size);
|
const struct ip* ip = (const struct ip*) (pkt + hdr_size);
|
||||||
if ( ip->ip_v == 4 )
|
if ( ip->ip_v == 4 )
|
||||||
ip_hdr = new IP_Hdr(ip, false);
|
ip_hdr = new IP_Hdr(ip, false);
|
||||||
else
|
else if ( ip->ip_v == 6 )
|
||||||
ip_hdr = new IP_Hdr((const struct ip6_hdr*) ip, false);
|
ip_hdr = new IP_Hdr((const struct ip6_hdr*) ip, false);
|
||||||
|
else
|
||||||
|
// weird will be generated later in NetSessions::NextPacket
|
||||||
|
return;
|
||||||
|
|
||||||
if ( ip_hdr->NextProto() == IPPROTO_TCP &&
|
if ( ip_hdr->NextProto() == IPPROTO_TCP &&
|
||||||
// Note: can't sort fragmented packets
|
// Note: can't sort fragmented packets
|
||||||
|
|
|
@ -431,6 +431,11 @@ void NetSessions::DoNextPacket(double t, const struct pcap_pkthdr* hdr,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// [Robin] dump_this_packet = 1 for non-ICMP/UDP/TCP removed here. Why?
|
// [Robin] dump_this_packet = 1 for non-ICMP/UDP/TCP removed here. Why?
|
||||||
|
// [Jon] The default case of the "switch ( proto )" calls Weird() which
|
||||||
|
// should set dump_this_packet = 1. The old code also returned
|
||||||
|
// at this point for non-ICMP/UDP/TCP, but for IPv6 fragments
|
||||||
|
// we need to do the reassembly first before knowing for sure what
|
||||||
|
// upper-layer protocol it is.
|
||||||
|
|
||||||
FragReassembler* f = 0;
|
FragReassembler* f = 0;
|
||||||
|
|
||||||
|
@ -468,8 +473,12 @@ void NetSessions::DoNextPacket(double t, const struct pcap_pkthdr* hdr,
|
||||||
caplen -= ip_hdr_len;
|
caplen -= ip_hdr_len;
|
||||||
|
|
||||||
// [Robin] Does ESP need to be the last header?
|
// [Robin] Does ESP need to be the last header?
|
||||||
|
// [Jon] In terms of what we try to parse, yes, we can't go any further
|
||||||
|
// in parsing a header chain once we reach an ESP one since
|
||||||
|
// encrypted payload immediately follows.
|
||||||
if ( ip_hdr->LastHeader() == IPPROTO_ESP )
|
if ( ip_hdr->LastHeader() == IPPROTO_ESP )
|
||||||
{
|
{
|
||||||
|
dump_this_packet = 1;
|
||||||
if ( esp_packet )
|
if ( esp_packet )
|
||||||
{
|
{
|
||||||
val_list* vl = new val_list();
|
val_list* vl = new val_list();
|
||||||
|
@ -491,6 +500,13 @@ void NetSessions::DoNextPacket(double t, const struct pcap_pkthdr* hdr,
|
||||||
|
|
||||||
// [Robin] The Remove(f) used to be here, while it's now before every
|
// [Robin] The Remove(f) used to be here, while it's now before every
|
||||||
// return statement. I'm not seeing why?
|
// return statement. I'm not seeing why?
|
||||||
|
// [Jon] That Remove(f) is still here above in the CheckHeaderTrunc()
|
||||||
|
// conditional that's just a refactoring of the old code.
|
||||||
|
// The reason why it's not done unconditionally after the reassembly
|
||||||
|
// is because doing that could cause the object that ip_hdr points
|
||||||
|
// to to be freed when we still need to use that below.
|
||||||
|
// I added Remove(f)'s before other "abnormal" return points that
|
||||||
|
// looked like they'd otherwise leak the memory.
|
||||||
|
|
||||||
const u_char* data = ip_hdr->Payload();
|
const u_char* data = ip_hdr->Payload();
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
ip6=[hdr=[class=0, flow=0, len=81, nxt=17, hlim=64, src=2001:470:1f11:81f:d138:5f55:6d4:1fe2, dst=2607:f740:b::f93], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]], udp = [sport=51850/udp, dport=53/udp, ulen=81]
|
ip6=[class=0, flow=0, len=81, nxt=17, hlim=64, src=2001:470:1f11:81f:d138:5f55:6d4:1fe2, dst=2607:f740:b::f93, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]]], udp = [sport=51850/udp, dport=53/udp, ulen=81]
|
||||||
ip6=[hdr=[class=0, flow=0, len=331, nxt=17, hlim=53, src=2607:f740:b::f93, dst=2001:470:1f11:81f:d138:5f55:6d4:1fe2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]], udp = [sport=53/udp, dport=51850/udp, ulen=331]
|
ip6=[class=0, flow=0, len=331, nxt=17, hlim=53, src=2607:f740:b::f93, dst=2001:470:1f11:81f:d138:5f55:6d4:1fe2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]]], udp = [sport=53/udp, dport=51850/udp, ulen=331]
|
||||||
ip6=[hdr=[class=0, flow=0, len=82, nxt=17, hlim=64, src=2001:470:1f11:81f:d138:5f55:6d4:1fe2, dst=2607:f740:b::f93], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]], udp = [sport=51851/udp, dport=53/udp, ulen=82]
|
ip6=[class=0, flow=0, len=82, nxt=17, hlim=64, src=2001:470:1f11:81f:d138:5f55:6d4:1fe2, dst=2607:f740:b::f93, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]]], udp = [sport=51851/udp, dport=53/udp, ulen=82]
|
||||||
ip6=[hdr=[class=0, flow=0, len=82, nxt=17, hlim=64, src=2001:470:1f11:81f:d138:5f55:6d4:1fe2, dst=2607:f740:b::f93], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]], udp = [sport=51851/udp, dport=53/udp, ulen=82]
|
ip6=[class=0, flow=0, len=82, nxt=17, hlim=64, src=2001:470:1f11:81f:d138:5f55:6d4:1fe2, dst=2607:f740:b::f93, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]]], udp = [sport=51851/udp, dport=53/udp, ulen=82]
|
||||||
ip6=[hdr=[class=0, flow=0, len=3238, nxt=17, hlim=53, src=2607:f740:b::f93, dst=2001:470:1f11:81f:d138:5f55:6d4:1fe2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]], udp = [sport=53/udp, dport=51851/udp, ulen=3238]
|
ip6=[class=0, flow=0, len=3238, nxt=17, hlim=53, src=2607:f740:b::f93, dst=2001:470:1f11:81f:d138:5f55:6d4:1fe2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[], ext_order=[]]], udp = [sport=53/udp, dport=51851/udp, ulen=3238]
|
||||||
|
|
|
@ -1,120 +1,120 @@
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::2, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::3, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::4, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::5, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=116, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::12, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=10, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::13, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=11, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=100, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::14, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=12, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::15, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=13, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=104, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::22, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=20, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::23, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=21, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=88, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::24, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=22, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=1]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=1]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=2]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=2]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=3]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=3]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=4]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=4]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=5]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=5]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=6]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=6]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=7]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=7]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=8]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=8]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=9]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=9]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25], hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=10]], ext_order=[50]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=76, nxt=50, hlim=64, src=3ffe::1, dst=3ffe::25, exts=[hopopts=[], dstopts=[], routing=[], fragment=[], ah=[], esp=[[spi=23, seq=10]], ext_order=[50]]], tcp=<uninitialized>, udp=<uninitialized>, icmp=<uninitialized>]
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
[ip=<uninitialized>, ip6=[hdr=[class=0, flow=0, len=59, nxt=0, hlim=64, src=2001:4f8:4:7:2e0:81ff:fe52:ffff, dst=2001:4f8:4:7:2e0:81ff:fe52:9a6b], hopopts=[[nxt=43, len=0, options=[[otype=1, len=4, data=\0\0\0\0]]]], dstopts=[], routing=[[nxt=17, len=4, rtype=0, segleft=2, data=\0\0\0\0 ^A\0x\0^A\02\0\0\0\0\0\0\0^A ^A\0x\0^A\02\0\0\0\0\0\0\0^B]], fragment=[], ah=[], esp=[], ext_order=[0, 43]], tcp=<uninitialized>, udp=[sport=53/udp, dport=53/udp, ulen=11], icmp=<uninitialized>]
|
[ip=<uninitialized>, ip6=[class=0, flow=0, len=59, nxt=0, hlim=64, src=2001:4f8:4:7:2e0:81ff:fe52:ffff, dst=2001:4f8:4:7:2e0:81ff:fe52:9a6b, exts=[hopopts=[[nxt=43, len=0, options=[[otype=1, len=4, data=\0\0\0\0]]]], dstopts=[], routing=[[nxt=17, len=4, rtype=0, segleft=2, data=\0\0\0\0 ^A\0x\0^A\02\0\0\0\0\0\0\0^A ^A\0x\0^A\02\0\0\0\0\0\0\0^B]], fragment=[], ah=[], esp=[], ext_order=[0, 43]]], tcp=<uninitialized>, udp=[sport=53/udp, dport=53/udp, ulen=11], icmp=<uninitialized>]
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
event ipv6_ext_headers(c: connection, p: pkt_hdr)
|
event ipv6_ext_headers(c: connection, p: pkt_hdr)
|
||||||
{
|
{
|
||||||
for ( h in p$ip6$routing )
|
for ( h in p$ip6$exts$routing )
|
||||||
if ( p$ip6$routing[h]$rtype == 0 )
|
if ( p$ip6$exts$routing[h]$rtype == 0 )
|
||||||
print routing0_data_to_addrs(p$ip6$routing[h]$data);
|
print routing0_data_to_addrs(p$ip6$exts$routing[h]$data);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue