mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 10:48:02 +00:00 
			
		
		
		
	library script to parse vrf devices into associative array
This commit is contained in:
		
							
								
								
									
										49
									
								
								lib_vrf.bash
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										49
									
								
								lib_vrf.bash
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # create an associative array of vrf interfaces and their ports | ||||
|  | ||||
| IFLINES=() | ||||
| declare -A IFNAMES | ||||
| declare -A VRFNAMES | ||||
|  | ||||
| while read line; do | ||||
|    IFLINES+=("$line") | ||||
| done < <(ip -o link show) | ||||
|  | ||||
| RE_MASTER=' master ([^ ]+) state ' | ||||
| for item in "${IFLINES[@]}"; do | ||||
|    #echo -e "\t$item" | ||||
|    [[ x$item = x ]] && continue | ||||
|  | ||||
|    IFS=': ' hunks=($item) | ||||
|    [[ "${hunks[1]}" = "" ]] && continue | ||||
|  | ||||
|    ifname="${hunks[1]}" | ||||
|    [[ "$ifname" = *NOARP,MASTER* ]] && continue | ||||
|  | ||||
|    IFNAMES["$ifname"]="unknown" | ||||
|  | ||||
|    if [[ $item = *master* ]] && [[ $item = *vrf* ]]; then | ||||
|       #echo "Looking for vrf in $ifname" | ||||
|       if [[ $item =~ $RE_MASTER ]]; then | ||||
|          [[ x${BASH_REMATCH[1]} = x ]] && continue; | ||||
|          vrfname=${BASH_REMATCH[1]}; | ||||
|          #echo "[[[$ifname]]]  [[[$vrfname]]]" | ||||
|          IFNAMES["$ifname"]="$vrfname" | ||||
|          VRFNAMES["$vrfname"]="$ifname" | ||||
|       fi | ||||
|    fi | ||||
| done | ||||
|  | ||||
| if [[ x$VRF_DEBUG = x1 ]]; then | ||||
|    echo "Interfaces: " | ||||
|    for ifname in "${!IFNAMES[@]}"; do | ||||
|       echo "IFN   $ifname => ${IFNAMES[$ifname]}" | ||||
|    done | ||||
|  | ||||
|    echo "virtual routers: " | ||||
|    for vrfname in "${!VRFNAMES[@]}"; do | ||||
|       echo "VRF   $vrfname => ${VRFNAMES[$vrfname]}" | ||||
|    done | ||||
| fi | ||||
| # | ||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds