Annotation of embedaddon/arping/extra/packets.exp, revision 1.1.1.1

1.1       misho       1: #!/usr/bin/expect -f
                      2: #
                      3: # Usage: packets.exp <path to arping>
                      4: #
                      5: # Uses dummy0 interface on linux to verify that packets are byte-perfect
                      6: # when they're sent out from arping.
                      7: #
                      8: # Ideas:
                      9: #   * Run this with a new network namespace, to eliminate stray packets.
                     10: #   * Merge with testing.exp.
                     11: #
                     12: # Currently tested:
                     13: #  -b
                     14: #  -d
                     15: #  -0
                     16: #  -S
                     17: #
                     18: set bin [lindex $argv 0]
                     19: set DEV "dummy0"
                     20: set my_mac "52:2b:c8:01:02:03"
                     21: set PACKETDUMP "packetdump.pcap"
                     22: 
                     23: proc dotest {name count filter cmd lines} {
                     24:     upvar DEV DEV
                     25:     upvar PACKETDUMP PACKETDUMP
                     26:     upvar bin bin
                     27:     upvar my_mac my_mac
                     28: 
                     29:     send_user -- "----------- $name -----------\n"
                     30:     send_user -- "Command: $cmd\n"
                     31:     spawn ip a a 192.0.2.100/24 dev "$DEV"
                     32:     expect eof
                     33: 
                     34:     spawn ip l set dev "$DEV" address "$my_mac"
                     35:     expect eof
                     36: 
                     37:     spawn ip l set up "$DEV"
                     38:     expect eof
                     39: 
                     40:     spawn tcpdump -c $count -i "$DEV" -s1500 -w "${PACKETDUMP}" "${filter}"
                     41:     set tcpdump_id $spawn_id
                     42:     expect -re "tcpdump: listening on .*bytes\r"
                     43: 
                     44:     spawn $bin {*}[eval "concat $cmd"]
                     45:     expect eof
                     46: 
                     47:     spawn ip l set down "$DEV"
                     48:     spawn ip a d 192.0.2.100/24 dev "$DEV"
                     49: 
                     50:     set spawn_id $tcpdump_id
                     51:     wait
                     52: 
                     53:     spawn -noecho tcpdump -etnXXr "${PACKETDUMP}" "${filter}"
                     54:     #log_user 0
                     55:     foreach l $lines {
                     56:         puts "Expecting: $l"
                     57:         expect "$l\r"
                     58:     }
                     59:     expect eof
                     60:     #log_user 1
                     61: }
                     62: 
                     63: 
                     64: dotest "Simple" 1 "arp" {-c 1 -i "$DEV" 192.0.2.1} {
                     65:     "52:2b:c8:01:02:03 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.0.2.1 tell 192.0.2.100, length 28"
                     66:     "\t0x0000:  ffff ffff ffff 522b c801 0203 0806 0001  ......R+........"
                     67:     "\t0x0010:  0800 0604 0001 522b c801 0203 c000 0264  ......R+.......d"
                     68:     "\t0x0020:  0000 0000 0000 c000 0201                 .........."
                     69: }
                     70: 
                     71: dotest "SrcIP 0 -0" 1 "arp" {-0 -c 1 -i "$DEV" 192.0.2.1} {
                     72:     "52:2b:c8:01:02:03 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.0.2.1 tell 0.0.0.0, length 28"
                     73:     "\t0x0000:  ffff ffff ffff 522b c801 0203 0806 0001  ......R+........"
                     74:     "\t0x0010:  0800 0604 0001 522b c801 0203 0000 0000  ......R+........"
                     75:     "\t0x0020:  0000 0000 0000 c000 0201                 .........."
                     76: }
                     77: 
                     78: dotest "SrcIP bc -b" 1 "arp" {-b -c 1 -i "$DEV" 192.0.2.1} {
                     79:     "52:2b:c8:01:02:03 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.0.2.1 tell 255.255.255.255, length 28"
                     80:     "\t0x0000:  ffff ffff ffff 522b c801 0203 0806 0001  ......R+........"
                     81:     "\t0x0010:  0800 0604 0001 522b c801 0203 ffff ffff  ......R+........"
                     82:     "\t0x0020:  0000 0000 0000 c000 0201                 .........."
                     83: }
                     84: 
                     85: dotest "SrcIP bc manual" 1 "arp" {-S 255.255.255.255 -c 1 -i "$DEV" 192.0.2.1} {
                     86:     "52:2b:c8:01:02:03 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.0.2.1 tell 255.255.255.255, length 28"
                     87:     "\t0x0000:  ffff ffff ffff 522b c801 0203 0806 0001  ......R+........"
                     88:     "\t0x0010:  0800 0604 0001 522b c801 0203 ffff ffff  ......R+........"
                     89:     "\t0x0020:  0000 0000 0000 c000 0201                 .........."
                     90: }
                     91: 
                     92: dotest "SrcIP other manual" 1 "arp" {-S 61.62.63.64 -c 1 -i "$DEV" 192.0.2.1} {
                     93:     "52:2b:c8:01:02:03 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.0.2.1 tell 61.62.63.64, length 28"
                     94:     "\t0x0000:  ffff ffff ffff 522b c801 0203 0806 0001  ......R+........"
                     95:     "\t0x0010:  0800 0604 0001 522b c801 0203 3d3e 3f40  ......R+....=>?@"
                     96:     "\t0x0020:  0000 0000 0000 c000 0201                 .........."
                     97: }
                     98: 
                     99: dotest "Finddup" 1 "arp" {-c 1 -d -i "$DEV"} {
                    100:     "52:2b:c8:01:02:03 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.0.2.100 tell 192.0.2.100, length 28"
                    101:     "\t0x0000:  ffff ffff ffff 522b c801 0203 0806 0001  ......R+........"
                    102:     "\t0x0010:  0800 0604 0001 522b c801 0203 c000 0264  ......R+.......d"
                    103:     "\t0x0020:  0000 0000 0000 c000 0264                 .........d"
                    104: }
                    105: 
                    106: send_user "\n==================== ALL DONE =================\n"
                    107: 
                    108: # ---- Emacs Variables ----
                    109: # Local Variables:
                    110: # c-basic-offset: 8
                    111: # tcl-basic-offset: 8
                    112: # indent-tabs-mode: nil
                    113: # End:
                    114: #
                    115: # vim: ts=8 sw=8

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>