1 #!/bin/bash 2 # Copyright 2014 Cynthia Rempel <cynthia (at] rtems.org> 3 # 4 # Brief: Some cursery coverage tests of ifconfig... 5 # Note: requires permissions to run modprobe and all ifconfig options 6 # Commands used: grep, grep -i, ip link, ip tuntap, wc -l 7 # 8 # Possible improvements: 9 # 1. Verify the dummy interface actually has the modified characteristics 10 # instead of relying on ifconfig output 11 # 2. Introduce more error cases, to verify ifconfig fails gracefully 12 # 3. Do more complex calls to ifconfig, while mixing the order of the 13 # arguments 14 # 4. Cover more ifconfig options: 15 # hw ether|infiniband ADDRESS - set LAN hardware address (AA:BB:CC...) 16 # txqueuelen LEN - number of buffered packets before output blocks 17 # Obsolete fields included for historical purposes: 18 # irq|io_addr|mem_start ADDR - micromanage obsolete hardware 19 # outfill|keepalive INTEGER - SLIP analog dialup line quality monitoring 20 # metric INTEGER - added to Linux 0.9.10 with comment "never used", still true 21 22 [ -f testing.sh ] && . testing.sh 23 24 if [ "$(id -u)" -ne 0 ] 25 then 26 echo "$SHOWSKIP: ifconfig (not root)" 27 continue 2>/dev/null 28 exit 29 fi 30 31 #testing "name" "command" "result" "infile" "stdin" 32 33 # Add a dummy interface to test with 34 ifconfig dummy0 up 35 36 # Test Description: Disable the dummy0 interface 37 # Results Expected: After calling ifconfig, no lines with dummy0 are displayed 38 testing "ifconfig dummy0 down and if config /-only" \ 39 "ifconfig dummy0 down && ifconfig dummy0 | grep dummy | wc -l" \ 40 "0\n" "" "" 41 42 # Test Description: Enable the dummy0 interface 43 # Results Expected: After calling ifconfig, one line with dummy0 is displayed 44 testing "ifconfig dummy0 up" \ 45 "ifconfig dummy0 up && ifconfig dummy0 | grep dummy | wc -l" \ 46 "1\n" "" "" 47 48 # Test Description: Set the ip address of the dummy0 interface 49 # Results Expected: After calling ifconfig dummy0, one line displays the ip 50 # address selected 51 testing "ifconfig dummy0 10.240.240.240" \ 52 "ifconfig dummy0 10.240.240.240 && ifconfig dummy0 | grep 10\.240\.240\.240 | wc -l" \ 53 "1\n" "" "" 54 55 # Test Description: Change the netmask to the interface 56 # Results Expected: After calling ifconfig dummy0, one line displays the 57 # netmask selected 58 testing "ifconfig dummy0 netmask 255.255.240.0" \ 59 "ifconfig dummy0 netmask 255.255.240.0 && ifconfig dummy0 | grep 255\.255\.240\.0 | wc -l" \ 60 "1\n" "" "" 61 62 # Test Description: Change the broadcast address to the interface 63 # Results Expected: After calling ifconfig dummy0, one line displays the 64 # broadcast address selected 65 testing "ifconfig dummy0 broadcast 10.240.240.255" \ 66 "ifconfig dummy0 broadcast 10.240.240.255 && ifconfig dummy0 | grep 10\.240\.240\.255 | wc -l" \ 67 "1\n" "" "" 68 69 # Test Description: Revert to the default ip address 70 # Results Expected: After calling ifconfig dummy0, there are no lines 71 # displaying the ip address previously selected 72 testing "ifconfig dummy0 default" \ 73 "ifconfig dummy0 default && ifconfig dummy0 | grep 10\.240\.240\.240 | wc -l" \ 74 "0\n" "" "" 75 76 # Test Description: Change the Maximum transmission unit (MTU) of the interface 77 # Results Expected: After calling ifconfig dummy0, there is one line with the 78 # selected MTU 79 testing "ifconfig dummy0 mtu 1269" \ 80 "ifconfig dummy0 mtu 1269 && ifconfig dummy0 | grep 1269 | wc -l" \ 81 "1\n" "" "" 82 83 # Test Description: Verify ifconfig add fails with such a small mtu 84 # Results Expected: There is one line of error message containing 85 # "No buffer space available" 86 testing "ifconfig dummy0 add ::2 -- too small mtu" \ 87 "ifconfig dummy0 add ::2 2>&1 | grep No\ buffer\ space\ available | wc -l" \ 88 "1\n" "" "" 89 90 # Test Description: Change the Maximum transmission unit (MTU) of the interface 91 # Results Expected: After calling ifconfig dummy0, there is one line with the 92 # selected MTU 93 testing "ifconfig dummy0 mtu 2000" \ 94 "ifconfig dummy0 mtu 2000 && ifconfig dummy0 | grep 2000 | wc -l" \ 95 "1\n" "" "" 96 97 # Test Description: Verify ifconfig add succeeds with a larger mtu 98 # Results Expected: after calling ifconfig dummy0, there is one line with the 99 # selected ip address 100 testing "ifconfig dummy0 add ::2" \ 101 "ifconfig dummy0 add ::2/126 && ifconfig dummy0 | grep \:\:2\/126 | wc -l" \ 102 "1\n" "" "" 103 104 # Test Description: Verify ifconfig del removes the selected ip6 address 105 # Results Expected: after calling ifconfig dummy0, there are no lines with the 106 # selected ip address 107 testing "ifconfig dummy0 del ::2" \ 108 "ifconfig dummy0 del ::2/126 && ifconfig dummy0 | grep \:\:2 | wc -l" \ 109 "0\n" "" "" 110 111 # Test Description: Remove the noarp flag and bring the interface down in 112 # preparation for the next test 113 # Results Expected: After calling ifconfig dummy0, there are no lines with the 114 # NOARP flag 115 testing "ifconfig dummy0 arp down" \ 116 "ifconfig dummy0 arp down && ifconfig dummy0 | grep -i NOARP | wc -l" \ 117 "0\n" "" "" 118 119 # Test Description: Call the pointtopoint option with no argument 120 # Results Expected: After calling ifconfig dummy0, there is one line with the 121 # NOARP and UP flags 122 testing "ifconfig dummy0 pointtopoint" \ 123 "ifconfig dummy0 pointtopoint && ifconfig dummy0 | grep -i NOARP | grep -i UP | wc -l" \ 124 "1\n" "" "" 125 126 # Test Description: Test the pointtopoint option and set the ipaddress 127 # Results Expected: After calling ifconfig dummy0, there is one line with the 128 # word inet and the selected ip address 129 testing "ifconfig dummy0 pointtopoint 127.0.0.2" \ 130 "ifconfig dummy0 pointtopoint 127.0.0.2 && ifconfig dummy0 | grep -i inet | grep -i 127\.0\.0\.2 | wc -l" \ 131 "1\n" "" "" 132 133 ####### Flags you can set on an interface (or -remove by prefixing with -): ############### 134 135 # Test Description: Enable allmulti mode on the interface 136 # Results Expected: After calling ifconfig dummy0, there is one line with the 137 # allmulti flag 138 testing "ifconfig dummy0 allmulti" \ 139 "ifconfig dummy0 allmulti && ifconfig dummy0 | grep -i allmulti | wc -l" "1\n" \ 140 "" "" 141 142 # Test Description: Disable multicast mode the interface 143 # Results Expected: After calling ifconfig dummy0, there are no lines with the 144 # allmulti flag 145 testing "ifconfig dummy0 -allmulti" \ 146 "ifconfig dummy0 -allmulti && ifconfig dummy0 | grep -i allmulti | wc -l" "0\n" \ 147 "" "" 148 149 # Test Description: Disable NOARP mode on the interface 150 # Results Expected: After calling ifconfig dummy0, there are no lines with the 151 # NOARP flag 152 testing "ifconfig dummy0 arp" \ 153 "ifconfig dummy0 arp && ifconfig dummy0 | grep -i NOARP | wc -l" "0\n" \ 154 "" "" 155 156 # Test Description: Enable NOARP mode on the interface 157 # Results Expected: After calling ifconfig dummy0, there is one line with the 158 # NOARP flag 159 testing "ifconfig dummy0 -arp" \ 160 "ifconfig dummy0 -arp && ifconfig dummy0 | grep -i NOARP | wc -l" "1\n" \ 161 "" "" 162 163 # Test Description: Enable multicast mode on the interface 164 # Results Expected: After calling ifconfig dummy0, there is one line with the 165 # multicast flag 166 testing "ifconfig dummy0 multicast" \ 167 "ifconfig dummy0 multicast && ifconfig dummy0 | grep -i multicast | wc -l" \ 168 "1\n" "" "" 169 170 # Test Description: Disable multicast mode the interface 171 # Results Expected: After calling ifconfig dummy0, there are no lines with the 172 # multicast flag 173 testing "ifconfig dummy0 -multicast" \ 174 "ifconfig dummy0 -multicast && ifconfig dummy0 | grep -i multicast | wc -l" \ 175 "0\n" "" "" 176 177 # Test Description: Enable promiscuous mode the interface 178 # Results Expected: After calling ifconfig dummy0, there is one line with the 179 # promisc flag 180 testing "ifconfig dummy0 promisc" \ 181 "ifconfig dummy0 promisc && ifconfig dummy0 | grep -i promisc | wc -l" "1\n" \ 182 "" "" 183 184 # Disable promiscuous mode the interface 185 # Results Expected: After calling ifconfig dummy0, there are no lines with the 186 # promisc flag 187 testing "ifconfig dummy0 -promisc" \ 188 "ifconfig dummy0 -promisc && ifconfig dummy0 | grep -i promisc | wc -l" "0\n" \ 189 "" "" 190 191 # Disable the dummy interface 192 ifconfig dummy0 down 193