Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 127149 | Differences between
and this patch

Collapse All | Expand All

(-)rc-scripts-1.6.14.orig/lib/rcscripts/net.modules.d/helpers.d/udhcpc-iproute2 (-6 / +42 lines)
Lines 62-75 Link Here
62
eval dhcp=\" \$\{dhcp_${interface}\} \"
62
eval dhcp=\" \$\{dhcp_${interface}\} \"
63
if [[ ${dhcp} != *' nogateway '* ]]; then
63
if [[ ${dhcp} != *' nogateway '* ]]; then
64
    # Configure our default route
64
    # Configure our default route
65
    x=$(ip route show | awk '{ if ($1 == "default") {print $3} }')
66
    for r in ${router}; do
65
    for r in ${router}; do
67
	# We can only have one default route!
66
	# We can only have one default route!
68
	if [[ -z ${x} ]]; then
67
        ip route replace default via ${r} dev ${interface} 2>/dev/null && break
69
	    ip route add default via ${r} dev ${interface} 2>/dev/null && break
68
    done
70
	elif [[ ${x} != ${r} ]]; then
69
fi
71
	    ip route change default via ${r} dev ${interface} 2>/dev/null && break
70
72
	fi
71
# Configure static routes
72
if [[ "${cidrroute}" ]]; then
73
    cidrroute="${cidrroute} "
74
    # Work while cidrroute not empty
75
    while true; do
76
        # First go number of bits in mask
77
        bits=${cidrroute%% *}
78
        [[ -z ${bits} ]] && break
79
        cidrroute=${cidrroute#* }
80
        pref=""
81
        if [[ ${bits} == 0 ]]; then
82
            # We got 0/0 here
83
            pref="default"
84
        else
85
            # Calc how many bytes we need to get from cidrroute
86
            # And get them in prefix
87
            bytes=$(( (${bits} - 1) / 8 + 1 ))
88
            while [[ ${bytes} > 0 ]]; do
89
                byte=${cidrroute%% *}
90
                cidrroute=${cidrroute#* }
91
                pref="${pref}.${byte}"
92
                bytes=$(( ${bytes} - 1 ))
93
            done
94
            pref=${pref#.}
95
            pref="${pref}/${bits}"
96
        fi
97
        # We have subnet prefix now and need to get gateway same way
98
        bytes=4
99
        gw=""
100
        while [[ ${bytes} > 0 ]]; do
101
            byte=${cidrroute%% *}
102
            cidrroute=${cidrroute#* }
103
            gw="${gw}.${byte}"
104
            bytes=$(( ${bytes} - 1 ))
105
        done
106
        gw=${gw#.}
107
        # And add the next route finally
108
        ip route replace ${pref} via ${gw} dev ${interface} 2>/dev/null
73
    done
109
    done
74
fi
110
fi
75
111

Return to bug 127149