X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fflowgen.pl;h=a14faa7093b89ac93b6dc62408fbb5d0cd2fd1ab;hb=9c150f6a7039218080e067e9955aac0f6a55a712;hp=45b9728459a2d7e6ad1c146e852c2eb7eb7a3a2f;hpb=34e63086edddcae06d7c1a4fa84fec0861e50758;p=sliver-openvswitch.git diff --git a/tests/flowgen.pl b/tests/flowgen.pl index 45b972845..a14faa709 100755 --- a/tests/flowgen.pl +++ b/tests/flowgen.pl @@ -1,6 +1,6 @@ #! /usr/bin/perl -# Copyright (c) 2009 Nicira Networks. +# Copyright (c) 2009, 2010 Nicira Networks. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -60,6 +60,7 @@ sub output { $flow{DL_SRC} = "00:02:e3:0f:80:a4"; $flow{DL_DST} = "00:1a:92:40:ac:05"; $flow{NW_PROTO} = 0; + $flow{NW_TOS} = 0; $flow{NW_SRC} = '0.0.0.0'; $flow{NW_DST} = '0.0.0.0'; $flow{TP_SRC} = 0; @@ -78,6 +79,7 @@ sub output { $flow{DL_TYPE} = 0x0800; # ETH_TYPE_IP $flow{NW_SRC} = '10.0.2.15'; $flow{NW_DST} = '192.168.1.20'; + $flow{NW_TOS} = 44; if ($attrs{TP_PROTO} eq 'other') { $flow{NW_PROTO} = 42; } elsif ($attrs{TP_PROTO} eq 'TCP' || @@ -109,6 +111,10 @@ sub output { my $packet = ''; $packet .= pack_ethaddr($flow{DL_DST}); $packet .= pack_ethaddr($flow{DL_SRC}); + if ($flow{DL_VLAN} != 0xffff) { + $packet .= pack('nn', 0x8100, $flow{DL_VLAN}); + } + my $len_ofs = length($packet); $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. @@ -117,14 +123,11 @@ sub output { $packet .= pack('CCC', 0xaa, 0xaa, 0x03); # LLC for SNAP. $packet .= pack('CCC', 0, 0, 0); # SNAP OUI. } - if ($attrs{DL_VLAN} ne 'none') { - $packet .= pack('nn', 0x8100, $flow{DL_VLAN}); - } $packet .= pack('n', $flow{DL_TYPE}); if ($attrs{DL_TYPE} eq 'ip') { my $ip = pack('CCnnnCCnNN', (4 << 4) | 5, # version, hdrlen - 0, # type of service + $flow{NW_TOS}, # type of service 0, # total length (filled in later) 65432, # id 0, # frag offset @@ -191,8 +194,11 @@ sub output { $packet .= $ip; } } - 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"; @@ -203,9 +209,11 @@ sub output { 1); # in_port print FLOWS pack_ethaddr($flow{DL_SRC}); print FLOWS pack_ethaddr($flow{DL_DST}); - print FLOWS pack('nnCxNNnn', + print FLOWS pack('nCxnCCxxNNnn', $flow{DL_VLAN}, + 0, # DL_VLAN_PCP $flow{DL_TYPE}, + $flow{NW_TOS}, $flow{NW_PROTO}, inet_aton($flow{NW_SRC}), inet_aton($flow{NW_DST}),