| #!/bin/bash |
| # Copyright 2014 Cynthia Rempel <cynthia@rtems.org> |
| # |
| # Brief: Some cursery coverage tests of ifconfig... |
| # Note: requires permissions to run modprobe and all ifconfig options |
| # Commands used: grep, grep -i, ip link, ip tuntap, wc -l |
| # |
| # Possible improvements: |
| # 1. Verify the dummy interface actually has the modified characteristics |
| # instead of relying on ifconfig output |
| # 2. Introduce more error cases, to verify ifconfig fails gracefully |
| # 3. Do more complex calls to ifconfig, while mixing the order of the |
| # arguments |
| # 4. Cover more ifconfig options: |
| # hw ether|infiniband ADDRESS - set LAN hardware address (AA:BB:CC...) |
| # txqueuelen LEN - number of buffered packets before output blocks |
| # Obsolete fields included for historical purposes: |
| # irq|io_addr|mem_start ADDR - micromanage obsolete hardware |
| # outfill|keepalive INTEGER - SLIP analog dialup line quality monitoring |
| # metric INTEGER - added to Linux 0.9.10 with comment "never used", still true |
| |
| [ -f testing.sh ] && . testing.sh |
| |
| if [ "$(id -u)" -ne 0 ] |
| then |
| echo "SKIPPED: ifconfig (not root)" |
| continue 2>/dev/null |
| exit |
| fi |
| |
| #testing "name" "command" "result" "infile" "stdin" |
| |
| # Add a dummy interface to test with |
| ifconfig dummy0 up |
| |
| # Test Description: Disable the dummy0 interface |
| # Results Expected: After calling ifconfig, no lines with dummy0 are displayed |
| testing "ifconfig dummy0 down and if config /-only" \ |
| "ifconfig dummy0 down && ifconfig dummy0 | grep dummy | wc -l" \ |
| "0\n" "" "" |
| |
| # Test Description: Enable the dummy0 interface |
| # Results Expected: After calling ifconfig, one line with dummy0 is displayed |
| testing "ifconfig dummy0 up" \ |
| "ifconfig dummy0 up && ifconfig dummy0 | grep dummy | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Set the ip address of the dummy0 interface |
| # Results Expected: After calling ifconfig dummy0, one line displays the ip |
| # address selected |
| testing "ifconfig dummy0 10.240.240.240" \ |
| "ifconfig dummy0 10.240.240.240 && ifconfig dummy0 | grep 10\.240\.240\.240 | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Change the netmask to the interface |
| # Results Expected: After calling ifconfig dummy0, one line displays the |
| # netmask selected |
| testing "ifconfig dummy0 netmask 255.255.240.0" \ |
| "ifconfig dummy0 netmask 255.255.240.0 && ifconfig dummy0 | grep 255\.255\.240\.0 | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Change the broadcast address to the interface |
| # Results Expected: After calling ifconfig dummy0, one line displays the |
| # broadcast address selected |
| testing "ifconfig dummy0 broadcast 10.240.240.255" \ |
| "ifconfig dummy0 broadcast 10.240.240.255 && ifconfig dummy0 | grep 10\.240\.240\.255 | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Revert to the default ip address |
| # Results Expected: After calling ifconfig dummy0, there are no lines |
| # displaying the ip address previously selected |
| testing "ifconfig dummy0 default" \ |
| "ifconfig dummy0 default && ifconfig dummy0 | grep 10\.240\.240\.240 | wc -l" \ |
| "0\n" "" "" |
| |
| # Test Description: Change the Maximum transmission unit (MTU) of the interface |
| # Results Expected: After calling ifconfig dummy0, there is one line with the |
| # selected MTU |
| testing "ifconfig dummy0 mtu 1269" \ |
| "ifconfig dummy0 mtu 1269 && ifconfig dummy0 | grep 1269 | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Verify ifconfig add fails with such a small mtu |
| # Results Expected: There is one line of error message containing |
| # "No buffer space available" |
| testing "ifconfig dummy0 add ::2 -- too small mtu" \ |
| "ifconfig dummy0 add ::2 2>&1 | grep No\ buffer\ space\ available | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Change the Maximum transmission unit (MTU) of the interface |
| # Results Expected: After calling ifconfig dummy0, there is one line with the |
| # selected MTU |
| testing "ifconfig dummy0 mtu 2000" \ |
| "ifconfig dummy0 mtu 2000 && ifconfig dummy0 | grep 2000 | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Verify ifconfig add succeeds with a larger mtu |
| # Results Expected: after calling ifconfig dummy0, there is one line with the |
| # selected ip address |
| testing "ifconfig dummy0 add ::2" \ |
| "ifconfig dummy0 add ::2/126 && ifconfig dummy0 | grep \:\:2\/126 | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Verify ifconfig del removes the selected ip6 address |
| # Results Expected: after calling ifconfig dummy0, there are no lines with the |
| # selected ip address |
| testing "ifconfig dummy0 del ::2" \ |
| "ifconfig dummy0 del ::2/126 && ifconfig dummy0 | grep \:\:2 | wc -l" \ |
| "0\n" "" "" |
| |
| # Test Description: Remove the noarp flag and bring the interface down in |
| # preparation for the next test |
| # Results Expected: After calling ifconfig dummy0, there are no lines with the |
| # NOARP flag |
| testing "ifconfig dummy0 arp down" \ |
| "ifconfig dummy0 arp down && ifconfig dummy0 | grep -i NOARP | wc -l" \ |
| "0\n" "" "" |
| |
| # Test Description: Call the pointtopoint option with no argument |
| # Results Expected: After calling ifconfig dummy0, there is one line with the |
| # NOARP and UP flags |
| testing "ifconfig dummy0 pointtopoint" \ |
| "ifconfig dummy0 pointtopoint && ifconfig dummy0 | grep -i NOARP | grep -i UP | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Test the pointtopoint option and set the ipaddress |
| # Results Expected: After calling ifconfig dummy0, there is one line with the |
| # word inet and the selected ip address |
| testing "ifconfig dummy0 pointtopoint 127.0.0.2" \ |
| "ifconfig dummy0 pointtopoint 127.0.0.2 && ifconfig dummy0 | grep -i inet | grep -i 127\.0\.0\.2 | wc -l" \ |
| "1\n" "" "" |
| |
| ####### Flags you can set on an interface (or -remove by prefixing with -): ############### |
| |
| # Test Description: Enable allmulti mode on the interface |
| # Results Expected: After calling ifconfig dummy0, there is one line with the |
| # allmulti flag |
| testing "ifconfig dummy0 allmulti" \ |
| "ifconfig dummy0 allmulti && ifconfig dummy0 | grep -i allmulti | wc -l" "1\n" \ |
| "" "" |
| |
| # Test Description: Disable multicast mode the interface |
| # Results Expected: After calling ifconfig dummy0, there are no lines with the |
| # allmulti flag |
| testing "ifconfig dummy0 -allmulti" \ |
| "ifconfig dummy0 -allmulti && ifconfig dummy0 | grep -i allmulti | wc -l" "0\n" \ |
| "" "" |
| |
| # Test Description: Disable NOARP mode on the interface |
| # Results Expected: After calling ifconfig dummy0, there are no lines with the |
| # NOARP flag |
| testing "ifconfig dummy0 arp" \ |
| "ifconfig dummy0 arp && ifconfig dummy0 | grep -i NOARP | wc -l" "0\n" \ |
| "" "" |
| |
| # Test Description: Enable NOARP mode on the interface |
| # Results Expected: After calling ifconfig dummy0, there is one line with the |
| # NOARP flag |
| testing "ifconfig dummy0 -arp" \ |
| "ifconfig dummy0 -arp && ifconfig dummy0 | grep -i NOARP | wc -l" "1\n" \ |
| "" "" |
| |
| # Test Description: Enable multicast mode on the interface |
| # Results Expected: After calling ifconfig dummy0, there is one line with the |
| # multicast flag |
| testing "ifconfig dummy0 multicast" \ |
| "ifconfig dummy0 multicast && ifconfig dummy0 | grep -i multicast | wc -l" \ |
| "1\n" "" "" |
| |
| # Test Description: Disable multicast mode the interface |
| # Results Expected: After calling ifconfig dummy0, there are no lines with the |
| # multicast flag |
| testing "ifconfig dummy0 -multicast" \ |
| "ifconfig dummy0 -multicast && ifconfig dummy0 | grep -i multicast | wc -l" \ |
| "0\n" "" "" |
| |
| # Test Description: Enable promiscuous mode the interface |
| # Results Expected: After calling ifconfig dummy0, there is one line with the |
| # promisc flag |
| testing "ifconfig dummy0 promisc" \ |
| "ifconfig dummy0 promisc && ifconfig dummy0 | grep -i promisc | wc -l" "1\n" \ |
| "" "" |
| |
| # Disable promiscuous mode the interface |
| # Results Expected: After calling ifconfig dummy0, there are no lines with the |
| # promisc flag |
| testing "ifconfig dummy0 -promisc" \ |
| "ifconfig dummy0 -promisc && ifconfig dummy0 | grep -i promisc | wc -l" "0\n" \ |
| "" "" |
| |
| # Disable the dummy interface |
| ifconfig dummy0 down |