1#!/bin/bash 2# Copyright 2014 Cynthia Rempel <cynthia@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 24if [ "$(id -u)" -ne 0 ] 25then 26 echo "$SHOWSKIP: ifconfig (not root)" 27 continue 2>/dev/null 28 exit 29fi 30 31#testing "name" "command" "result" "infile" "stdin" 32 33# Add a dummy interface to test with 34ifconfig dummy0 up 35 36# Test Description: Disable the dummy0 interface 37# Results Expected: After calling ifconfig, no lines with dummy0 are displayed 38testing "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 44testing "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 51testing "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 58testing "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 65testing "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 72testing "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 79testing "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" 86testing "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 93testing "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 100testing "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 107testing "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 115testing "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 122testing "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 129testing "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 138testing "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 145testing "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 152testing "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 159testing "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 166testing "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 173testing "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 180testing "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 187testing "ifconfig dummy0 -promisc" \ 188"ifconfig dummy0 -promisc && ifconfig dummy0 | grep -i promisc | wc -l" "0\n" \ 189"" "" 190 191# Disable the dummy interface 192ifconfig dummy0 down 193