#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
$flow{DL_TYPE} = 0x0800; # ETH_TYPE_IP
$flow{NW_SRC} = '10.0.2.15';
$flow{NW_DST} = '192.168.1.20';
$flow{DL_TYPE} = 0x0800; # ETH_TYPE_IP
$flow{NW_SRC} = '10.0.2.15';
$flow{NW_DST} = '192.168.1.20';
$packet .= pack('n', 0) if $attrs{DL_HEADER} =~ /^802.2/;
if ($attrs{DL_HEADER} eq '802.2') {
$packet .= pack('CCC', 0x42, 0x42, 0x03); # LLC for 802.1D STP.
$packet .= pack('n', 0) if $attrs{DL_HEADER} =~ /^802.2/;
if ($attrs{DL_HEADER} eq '802.2') {
$packet .= pack('CCC', 0x42, 0x42, 0x03); # LLC for 802.1D STP.
$packet .= pack('CCC', 0xaa, 0xaa, 0x03); # LLC for SNAP.
$packet .= pack('CCC', 0, 0, 0); # SNAP OUI.
}
$packet .= pack('CCC', 0xaa, 0xaa, 0x03); # LLC for SNAP.
$packet .= pack('CCC', 0, 0, 0); # SNAP OUI.
}
$packet .= pack('n', $flow{DL_TYPE});
if ($attrs{DL_TYPE} eq 'ip') {
my $ip = pack('CCnnnCCnNN',
(4 << 4) | 5, # version, hdrlen
$packet .= pack('n', $flow{DL_TYPE});
if ($attrs{DL_TYPE} eq 'ip') {
my $ip = pack('CCnnnCCnNN',
(4 << 4) | 5, # version, hdrlen
- substr($packet, 12, 2) = pack('n', length($packet))
- if $attrs{DL_HEADER} =~ /^802.2/;
+ if ($attrs{DL_HEADER} =~ /^802.2/) {
+ my $len = length ($packet);
+ $len -= 4 if $flow{DL_VLAN} != 0xffff;
+ substr($packet, $len_ofs, 2) = pack('n', $len);
+ }
print join(' ', map("$_=$attrs{$_}", keys(%attrs))), "\n";
print join(' ', map("$_=$flow{$_}", keys(%flow))), "\n";
print join(' ', map("$_=$attrs{$_}", keys(%attrs))), "\n";
print join(' ', map("$_=$flow{$_}", keys(%flow))), "\n";
$flow{NW_PROTO},
inet_aton($flow{NW_SRC}),
inet_aton($flow{NW_DST}),
$flow{NW_PROTO},
inet_aton($flow{NW_SRC}),
inet_aton($flow{NW_DST}),