Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  broadcast_ether_dst.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Author: Brett A C Sheffield <bacs@librecast.net>
# Author: Oscar Maes <oscmaes92@gmail.com>
#
# Ensure destination ethernet field is correctly set for
# broadcast packets

source lib.sh

CLIENT_IP4="192.168.0.1"
GW_IP4="192.168.0.2"

setup() {
 setup_ns CLIENT_NS SERVER_NS

 ip -net "${SERVER_NS}" link add link1 type veth \
  peer name link0 netns "${CLIENT_NS}"

 ip -net "${CLIENT_NS}" link set link0 up
 ip -net "${CLIENT_NS}" addr add "${CLIENT_IP4}"/24 dev link0

 ip -net "${SERVER_NS}" link set link1 up

 ip -net "${CLIENT_NS}" route add default via "${GW_IP4}"
 ip netns exec "${CLIENT_NS}" arp -s "${GW_IP4}" 00:11:22:33:44:55
}

cleanup() {
 rm -f "${CAPFILE}" "${OUTPUT}"
 ip -net "${SERVER_NS}" link del link1
 cleanup_ns "${CLIENT_NS}" "${SERVER_NS}"
}

test_broadcast_ether_dst() {
 local rc=0
 CAPFILE=$(mktemp -u cap.XXXXXXXXXX)
 OUTPUT=$(mktemp -u out.XXXXXXXXXX)

 echo "Testing ethernet broadcast destination"

 # start tcpdump listening for icmp
 # tcpdump will exit after receiving a single packet
 # timeout will kill tcpdump if it is still running after 2s
 timeout 2s ip netns exec "${CLIENT_NS}" \
  tcpdump -i link0 -c 1 -w "${CAPFILE}" icmp &> "${OUTPUT}" &
 pid=$!
 slowwait 1 grep -qs "listening" "${OUTPUT}"

 # send broadcast ping
 ip netns exec "${CLIENT_NS}" \
  ping -W0.01 -c1 -b 255.255.255.255 &> /dev/null

 # wait for tcpdump for exit after receiving packet
 wait "${pid}"

 # compare ethernet destination field to ff:ff:ff:ff:ff:ff
 ether_dst=$(tcpdump -r "${CAPFILE}" -tnne 2>/dev/null | \
   awk '{sub(/,/,"",$3); print $3}')
 if [[ "${ether_dst}" == "ff:ff:ff:ff:ff:ff" ]]; then
  echo "[ OK ]"
  rc="${ksft_pass}"
 else
  echo "[FAIL] expected dst ether addr to be ff:ff:ff:ff:ff:ff," \
   "got ${ether_dst}"
  rc="${ksft_fail}"
 fi

 return "${rc}"
}

if [ ! -x "$(command -v tcpdump)" ]; then
 echo "SKIP: Could not run test without tcpdump tool"
 exit "${ksft_skip}"
fi

trap cleanup EXIT

setup
test_broadcast_ether_dst

exit $?

Messung V0.5
C=96 H=97 G=96

¤ Dauer der Verarbeitung: 0.19 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge