From 0f2230dac59db78a0ef0dd6bae385ba30129e0c8 Mon Sep 17 00:00:00 2001 From: kvaps Date: Fri, 26 Jan 2018 21:58:50 +0100 Subject: [PATCH 1/8] upd: more logs --- bridget.sh | 50 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/bridget.sh b/bridget.sh index 01b6d59..2bc0e15 100644 --- a/bridget.sh +++ b/bridget.sh @@ -44,8 +44,8 @@ log() { debug() { if [ "$DEBUG" == 1 ]; then - echo -en "[$(date '+%Y-%m-%d %H:%M:%S')] DEBUG:\t" - echo "$1" + >&2 echo -en "[$(date '+%Y-%m-%d %H:%M:%S')] DEBUG:\t" + >&2 echo "$1" fi } @@ -91,32 +91,30 @@ address_is_free(){ # Kill tcpdump kill "$!" && wait "$!" - local TCPDUMP_COUNT="$(awk '$3 == "received" {print $1}' /tmp/tcpdump.out; rm -f /tmp/tcpdump.out)" + local TCPDUMP_COUNT="$(awk '$3 == "received" {print $1}' /tmp/tcpdump.out)" local ARPING_COUNT="$(echo "$ARPING_CHECK" | awk '{print $1+$2}')" local ARPING_SEND="$(echo "$ARPING_CHECK" | awk '{print $1}')" local ARPING_RECEIVED="$(echo "$ARPING_CHECK" | awk '{print $2}')" + debug "TCPDUMP_COUNT=$TCPDUMP_COUNT" + debug "ARPING_COUNT=$ARPING_COUNT" + debug "ARPING_SEND=$ARPING_SEND" + debug "ARPING_RECEIVED=$ARPING_RECEIVED" + debug "$(cat /tmp/tcpdump.out)" + rm -f /tmp/tcpdump.out + if [ "$ARPING_RECEIVED" == "0" ] && [ "$TCPDUMP_COUNT" == "$ARPING_COUNT" ]; then + debug "[ ARPING_RECEIVED == 0 ] && [ TCPDUMP_COUNT == ARPING_COUNT ]" return 0 else + debug "[ ARPING_RECEIVED != 0 ] && [ TCPDUMP_COUNT != ARPING_COUNT ]" return 1 fi } unused_gateway() { - if [ -f "$CNI_CONFIG" ]; then - local UNUSED_GATEWAY=$(sed -n 's/.*"gateway": "\(.*\)",/\1/p' "$CNI_CONFIG") - rm -f "$CNI_CONFIG" - fi - if [ -z $UNUSED_GATEWAY ] || ! gateway_is_right "$UNUSED_GATEWAY"; then - UNUSED_GATEWAY="$(random_gateway)" - fi - while ! address_is_free "$UNUSED_GATEWAY"; do - local UNUSED_GATEWAY="$(random_gateway)" - done - echo "$UNUSED_GATEWAY" } gateway_is_right() { @@ -247,9 +245,25 @@ IPADDR="$(ip -f inet -o addr show "$BRIDGE" | grep -o -m1 'inet [^ /]*' | cut -d # If ip not exist if [ -z "$IPADDR" ]; then - log "Retrieving IP-address" - IPADDR="$(unused_gateway)" - log "Successful retrived $IPADDR" + if [ -f "$CNI_CONFIG" ]; then + CHECKING_IP=$(sed -n 's/.*"gateway": "\(.*\)",/\1/p' "$CNI_CONFIG") + log "Cni config found, taking old address $CHECKING_IP" + rm -f "$CNI_CONFIG" + fi + if [ -z $CHECKING_IP ] || ! gateway_is_right "$CHECKING_IP"; then + CHECKING_IP="$(random_gateway)" + log "New address generated $CHECKING_IP" + fi + + log "Checking $CHECKING_IP" + while ! address_is_free "$CHECKING_IP"; do + log "Address $CHECKING_IP is not free" + CHECKING_IP="$(random_gateway)" + log "Taking another one $CHECKING_IP" + done + + log "Address $CHECKING_IP is free, using it as gateway" + IPADDR="$CHECKING_IP" log "Configuring $IPADDR/$POD_PREFIX on $BRIDGE" ip addr change "$IPADDR/$POD_PREFIX" dev "$BRIDGE" @@ -309,4 +323,4 @@ debug "$(cat "$CNI_CONFIG")" # ------------------------------------------------------------------------------------ # Sleep gently # ------------------------------------------------------------------------------------ -tail -f /dev/null +exec tail -f /dev/null From 65e011f7a281f1e582fb31a8093f6184e6567d2a Mon Sep 17 00:00:00 2001 From: kvaps Date: Fri, 26 Jan 2018 22:25:22 +0100 Subject: [PATCH 2/8] fix: more logs --- bridget.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/bridget.sh b/bridget.sh index 2bc0e15..4ceeddf 100644 --- a/bridget.sh +++ b/bridget.sh @@ -113,10 +113,6 @@ address_is_free(){ } -unused_gateway() { - -} - gateway_is_right() { (IFS= echo "$NETWORKS_LIST") | grep -q "$(prev_ip $1)" } From b99e7f6f1801cbce03ea848a8ff77b73f6232fc3 Mon Sep 17 00:00:00 2001 From: kvaps Date: Fri, 26 Jan 2018 22:49:25 +0100 Subject: [PATCH 3/8] upd: less logs --- bridget.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/bridget.sh b/bridget.sh index 4ceeddf..97ee261 100644 --- a/bridget.sh +++ b/bridget.sh @@ -91,7 +91,7 @@ address_is_free(){ # Kill tcpdump kill "$!" && wait "$!" - local TCPDUMP_COUNT="$(awk '$3 == "received" {print $1}' /tmp/tcpdump.out)" + local TCPDUMP_COUNT="$(awk '$3 == "received" {print $1}' /tmp/tcpdump.out; rm -f /tmp/tcpdump.out)" local ARPING_COUNT="$(echo "$ARPING_CHECK" | awk '{print $1+$2}')" local ARPING_SEND="$(echo "$ARPING_CHECK" | awk '{print $1}')" local ARPING_RECEIVED="$(echo "$ARPING_CHECK" | awk '{print $2}')" @@ -100,8 +100,6 @@ address_is_free(){ debug "ARPING_COUNT=$ARPING_COUNT" debug "ARPING_SEND=$ARPING_SEND" debug "ARPING_RECEIVED=$ARPING_RECEIVED" - debug "$(cat /tmp/tcpdump.out)" - rm -f /tmp/tcpdump.out if [ "$ARPING_RECEIVED" == "0" ] && [ "$TCPDUMP_COUNT" == "$ARPING_COUNT" ]; then debug "[ ARPING_RECEIVED == 0 ] && [ TCPDUMP_COUNT == ARPING_COUNT ]" @@ -227,8 +225,6 @@ NETWORKS_LIST="$( done )" -debug "NETWORKS_LIST=\"$(echo "$NETWORKS_LIST" | tr '\n' ' ' )\"" - # ------------------------------------------------------------------------------------ # Configure IP-address # ------------------------------------------------------------------------------------ From d193ef325fe49bbf36f0a52bba301046bc76021c Mon Sep 17 00:00:00 2001 From: kvaps Date: Fri, 26 Jan 2018 22:54:20 +0100 Subject: [PATCH 4/8] add: tcpdump logs --- bridget.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bridget.sh b/bridget.sh index 97ee261..62ea9f9 100644 --- a/bridget.sh +++ b/bridget.sh @@ -80,8 +80,14 @@ address_is_free(){ ARP_PACKETS=${ARP_PACKETS:-4} # Start recording packets - tcpdump -nn -i "$BRIDGE" arp host "$1" 1>/dev/null 2>/tmp/tcpdump.out & - + + # Start recording packets + if [ "$DEBUG" == 1 ]; then + tcpdump -nn -i "$BRIDGE" arp host "$1" 2>/tmp/tcpdump.out 1>&2 & + else + tcpdump -nn -i "$BRIDGE" arp host "$1" 2>/tmp/tcpdump.out 1>/dev/null & + fi + # Wait for tcpdump until [ -f /tmp/tcpdump.out ]; do sleep 0.1; done From ff3b04ed08f751f8e0e1f805389744242aa8a027 Mon Sep 17 00:00:00 2001 From: kvaps Date: Fri, 26 Jan 2018 23:14:43 +0100 Subject: [PATCH 5/8] fix: tcpdump output --- bridget.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bridget.sh b/bridget.sh index 62ea9f9..d737170 100644 --- a/bridget.sh +++ b/bridget.sh @@ -83,9 +83,9 @@ address_is_free(){ # Start recording packets if [ "$DEBUG" == 1 ]; then - tcpdump -nn -i "$BRIDGE" arp host "$1" 2>/tmp/tcpdump.out 1>&2 & + tcpdump -nn -i "$BRIDGE" arp host "$1" 1>&2 2>/tmp/tcpdump.out & else - tcpdump -nn -i "$BRIDGE" arp host "$1" 2>/tmp/tcpdump.out 1>/dev/null & + tcpdump -nn -i "$BRIDGE" arp host "$1" 1>/dev/null 2>/tmp/tcpdump.out & fi # Wait for tcpdump @@ -97,7 +97,7 @@ address_is_free(){ # Kill tcpdump kill "$!" && wait "$!" - local TCPDUMP_COUNT="$(awk '$3 == "received" {print $1}' /tmp/tcpdump.out; rm -f /tmp/tcpdump.out)" + local TCPDUMP_COUNT="$(cat /tmp/tcpdump.out | grep -m1 "packets received by filter$" | awk '$3 == "received" {print $1}'; rm -f /tmp/tcpdump.out)" local ARPING_COUNT="$(echo "$ARPING_CHECK" | awk '{print $1+$2}')" local ARPING_SEND="$(echo "$ARPING_CHECK" | awk '{print $1}')" local ARPING_RECEIVED="$(echo "$ARPING_CHECK" | awk '{print $2}')" From a8bc5c75beaa1048a2a7443d541c16e17e0a8dc2 Mon Sep 17 00:00:00 2001 From: kvaps Date: Fri, 26 Jan 2018 23:24:12 +0100 Subject: [PATCH 6/8] fix: tcpdump waiting --- bridget.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bridget.sh b/bridget.sh index d737170..1592f95 100644 --- a/bridget.sh +++ b/bridget.sh @@ -89,7 +89,7 @@ address_is_free(){ fi # Wait for tcpdump - until [ -f /tmp/tcpdump.out ]; do sleep 0.1; done + until grep -q 'listening on' /tmp/tcpdump.out; do sleep 1; done # Start arping local ARPING_CHECK="$(arping -fD -I "$BRIDGE" -s 0.0.0.0 -c 4 "$1" | awk '$1=="Sent" {printf $2 " "} $1=="Received" {print $2}')" @@ -111,7 +111,7 @@ address_is_free(){ debug "[ ARPING_RECEIVED == 0 ] && [ TCPDUMP_COUNT == ARPING_COUNT ]" return 0 else - debug "[ ARPING_RECEIVED != 0 ] && [ TCPDUMP_COUNT != ARPING_COUNT ]" + debug "[ ARPING_RECEIVED != 0 ] || [ TCPDUMP_COUNT != ARPING_COUNT ]" return 1 fi From ca6adac12f7d2cc6d939033d1e87a4d6a33520d7 Mon Sep 17 00:00:00 2001 From: kvaps Date: Fri, 26 Jan 2018 23:35:09 +0100 Subject: [PATCH 7/8] fix: tcpdump count --- bridget.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bridget.sh b/bridget.sh index 1592f95..a5bd7e4 100644 --- a/bridget.sh +++ b/bridget.sh @@ -79,8 +79,6 @@ address_is_free(){ ARP_PACKETS=${ARP_PACKETS:-4} - # Start recording packets - # Start recording packets if [ "$DEBUG" == 1 ]; then tcpdump -nn -i "$BRIDGE" arp host "$1" 1>&2 2>/tmp/tcpdump.out & @@ -97,7 +95,7 @@ address_is_free(){ # Kill tcpdump kill "$!" && wait "$!" - local TCPDUMP_COUNT="$(cat /tmp/tcpdump.out | grep -m1 "packets received by filter$" | awk '$3 == "received" {print $1}'; rm -f /tmp/tcpdump.out)" + local TCPDUMP_COUNT="$(cat /tmp/tcpdump.out | grep -m1 "packets captured$" | awk '{print $1}'; rm -f /tmp/tcpdump.out)" local ARPING_COUNT="$(echo "$ARPING_CHECK" | awk '{print $1+$2}')" local ARPING_SEND="$(echo "$ARPING_CHECK" | awk '{print $1}')" local ARPING_RECEIVED="$(echo "$ARPING_CHECK" | awk '{print $2}')" From 4a2fa018e2c06ef181744f5017090f67f194fef9 Mon Sep 17 00:00:00 2001 From: kvaps Date: Fri, 26 Jan 2018 23:49:49 +0100 Subject: [PATCH 8/8] upd: displaing config --- bridget.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bridget.sh b/bridget.sh index a5bd7e4..23309f2 100644 --- a/bridget.sh +++ b/bridget.sh @@ -314,7 +314,9 @@ cat > $CNI_CONFIG <