Annotation of embedaddon/arping/extra/packets.exp, revision 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>