diff options
-rw-r--r-- | meta/recipes-connectivity/dhcp/dhcp/replace-ifconfig-route.patch | 176 | ||||
-rw-r--r-- | meta/recipes-connectivity/dhcp/dhcp_4.3.0.bb | 1 |
2 files changed, 177 insertions, 0 deletions
diff --git a/meta/recipes-connectivity/dhcp/dhcp/replace-ifconfig-route.patch b/meta/recipes-connectivity/dhcp/dhcp/replace-ifconfig-route.patch new file mode 100644 index 0000000000..61dd6a7186 --- /dev/null +++ b/meta/recipes-connectivity/dhcp/dhcp/replace-ifconfig-route.patch | |||
@@ -0,0 +1,176 @@ | |||
1 | Found this patch here: | ||
2 | https://lists.isc.org/pipermail/dhcp-users/2011-January/012910.html | ||
3 | |||
4 | and made some adjustments/updates to make it work with this version. | ||
5 | Wasn't able to find that why this patch was not accepted by ISC DHCP developers. | ||
6 | |||
7 | Upstream-Status: Pending | ||
8 | |||
9 | Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com> | ||
10 | |||
11 | --- dhcp-4.2.5-P1/client/scripts/linux.orig 2013-09-04 12:22:55.000000000 +0500 | ||
12 | +++ dhcp-4.2.5-P1/client/scripts/linux 2013-09-04 12:52:19.068761518 +0500 | ||
13 | @@ -103,17 +103,11 @@ | ||
14 | if [ x$old_broadcast_address != x ]; then | ||
15 | old_broadcast_arg="broadcast $old_broadcast_address" | ||
16 | fi | ||
17 | -if [ x$new_subnet_mask != x ]; then | ||
18 | - new_subnet_arg="netmask $new_subnet_mask" | ||
19 | -fi | ||
20 | -if [ x$old_subnet_mask != x ]; then | ||
21 | - old_subnet_arg="netmask $old_subnet_mask" | ||
22 | -fi | ||
23 | -if [ x$alias_subnet_mask != x ]; then | ||
24 | - alias_subnet_arg="netmask $alias_subnet_mask" | ||
25 | +if [ -n "$new_subnet_mask" ]; then | ||
26 | + new_mask="/$new_subnet_mask" | ||
27 | fi | ||
28 | -if [ x$new_interface_mtu != x ]; then | ||
29 | - mtu_arg="mtu $new_interface_mtu" | ||
30 | +if [ -n "$alias_subnet_mask" ]; then | ||
31 | + alias_mask="/$alias_subnet_mask" | ||
32 | fi | ||
33 | if [ x$IF_METRIC != x ]; then | ||
34 | metric_arg="metric $IF_METRIC" | ||
35 | @@ -127,9 +121,9 @@ | ||
36 | if [ x$reason = xPREINIT ]; then | ||
37 | if [ x$alias_ip_address != x ]; then | ||
38 | # Bring down alias interface. Its routes will disappear too. | ||
39 | - ifconfig $interface:0- inet 0 | ||
40 | + ${ip} -4 addr flush dev ${interface} label ${interface}:0 | ||
41 | fi | ||
42 | - ifconfig $interface 0 up | ||
43 | + ${ip} link set dev ${interface} up | ||
44 | |||
45 | # We need to give the kernel some time to get the interface up. | ||
46 | sleep 1 | ||
47 | @@ -156,25 +150,30 @@ | ||
48 | if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \ | ||
49 | [ x$alias_ip_address != x$old_ip_address ]; then | ||
50 | # Possible new alias. Remove old alias. | ||
51 | - ifconfig $interface:0- inet 0 | ||
52 | + ${ip} -4 addr flush dev ${interface} label ${interface}:0 | ||
53 | fi | ||
54 | if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then | ||
55 | # IP address changed. Bringing down the interface will delete all routes, | ||
56 | # and clear the ARP cache. | ||
57 | - ifconfig $interface inet 0 down | ||
58 | + ${ip} -4 addr flush dev ${interface} label ${interface} | ||
59 | |||
60 | fi | ||
61 | if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \ | ||
62 | [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then | ||
63 | |||
64 | - ifconfig $interface inet $new_ip_address $new_subnet_arg \ | ||
65 | - $new_broadcast_arg $mtu_arg | ||
66 | + ${ip} -4 addr add ${new_ip_address}${new_mask} ${new_broadcast_arg} \ | ||
67 | + dev ${interface} label ${interface} | ||
68 | + if [ -n "$new_interface_mtu" ]; then | ||
69 | + # set MTU | ||
70 | + ${ip} link set dev ${interface} mtu ${new_interface_mtu} | ||
71 | + fi | ||
72 | # Add a network route to the computed network address. | ||
73 | for router in $new_routers; do | ||
74 | if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then | ||
75 | - route add -host $router dev $interface | ||
76 | + ${ip} -4 route add ${router} dev $interface >/dev/null 2>&1 | ||
77 | fi | ||
78 | - route add default gw $router $metric_arg dev $interface | ||
79 | + ${ip} -4 route add default via ${router} dev ${interface} \ | ||
80 | + ${metric_arg} >/dev/null 2>&1 | ||
81 | done | ||
82 | else | ||
83 | # we haven't changed the address, have we changed other options | ||
84 | @@ -182,21 +181,23 @@ | ||
85 | if [ x$new_routers != x ] && [ x$new_routers != x$old_routers ] ; then | ||
86 | # if we've changed routers delete the old and add the new. | ||
87 | for router in $old_routers; do | ||
88 | - route del default gw $router | ||
89 | + ${ip} -4 route delete default via ${router} | ||
90 | done | ||
91 | for router in $new_routers; do | ||
92 | if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then | ||
93 | - route add -host $router dev $interface | ||
94 | - fi | ||
95 | - route add default gw $router $metric_arg dev $interface | ||
96 | + ${ip} -4 route add ${router} dev $interface >/dev/null 2>&1 | ||
97 | + fi | ||
98 | + ${ip} -4 route add default via ${router} dev ${interface} \ | ||
99 | + ${metric_arg} >/dev/null 2>&1 | ||
100 | done | ||
101 | fi | ||
102 | fi | ||
103 | if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ]; | ||
104 | then | ||
105 | - ifconfig $interface:0- inet 0 | ||
106 | - ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg | ||
107 | - route add -host $alias_ip_address $interface:0 | ||
108 | + ${ip} -4 addr flush dev ${interface} label ${interface}:0 | ||
109 | + ${ip} -4 addr add ${alias_ip_address}${alias_mask} \ | ||
110 | + dev ${interface} label ${interface}:0 | ||
111 | + ${ip} -4 route add ${alias_ip_address} dev ${interface} >/dev/null 2>&1 | ||
112 | fi | ||
113 | make_resolv_conf | ||
114 | exit_with_hooks 0 | ||
115 | @@ -206,42 +207,49 @@ | ||
116 | || [ x$reason = xSTOP ]; then | ||
117 | if [ x$alias_ip_address != x ]; then | ||
118 | # Turn off alias interface. | ||
119 | - ifconfig $interface:0- inet 0 | ||
120 | + ${ip} -4 addr flush dev ${interface} label ${interface}:0 | ||
121 | fi | ||
122 | if [ x$old_ip_address != x ]; then | ||
123 | # Shut down interface, which will delete routes and clear arp cache. | ||
124 | - ifconfig $interface inet 0 down | ||
125 | + ${ip} -4 addr flush dev ${interface} label ${interface} | ||
126 | fi | ||
127 | if [ x$alias_ip_address != x ]; then | ||
128 | - ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg | ||
129 | - route add -host $alias_ip_address $interface:0 | ||
130 | + ${ip} -4 addr add ${alias_ip_address}${alias_network_arg} \ | ||
131 | + dev ${interface} label ${interface}:0 | ||
132 | + ${ip} -4 route add ${alias_ip_address} dev ${interface} >/dev/null 2>&1 | ||
133 | fi | ||
134 | exit_with_hooks 0 | ||
135 | fi | ||
136 | |||
137 | if [ x$reason = xTIMEOUT ]; then | ||
138 | if [ x$alias_ip_address != x ]; then | ||
139 | - ifconfig $interface:0- inet 0 | ||
140 | + ${ip} -4 addr flush dev ${interface} label ${interface}:0 | ||
141 | + fi | ||
142 | + ${ip} -4 addr add ${new_ip_address}${new_mask} ${new_broadcast_arg} \ | ||
143 | + dev ${interface} label ${interface} | ||
144 | + if [ -n "$new_interface_mtu" ]; then | ||
145 | + # set MTU | ||
146 | + ip link set dev ${interface} mtu ${new_interface_mtu} | ||
147 | fi | ||
148 | - ifconfig $interface inet $new_ip_address $new_subnet_arg \ | ||
149 | - $new_broadcast_arg $mtu_arg | ||
150 | set $new_routers | ||
151 | if ping -q -c 1 $1; then | ||
152 | if [ x$new_ip_address != x$alias_ip_address ] && \ | ||
153 | [ x$alias_ip_address != x ]; then | ||
154 | - ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg | ||
155 | - route add -host $alias_ip_address dev $interface:0 | ||
156 | + ${ip} -4 addr add ${alias_ip_address}${alias_mask} \ | ||
157 | + dev ${interface} label ${interface}:0 | ||
158 | + ${ip} -4 route add ${alias_ip_address} dev ${interface} >/dev/null 2>&1 | ||
159 | fi | ||
160 | for router in $new_routers; do | ||
161 | if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then | ||
162 | - route add -host $router dev $interface | ||
163 | + ${ip} -4 route add ${router} dev $interface >/dev/null 2>&1 | ||
164 | fi | ||
165 | - route add default gw $router $metric_arg dev $interface | ||
166 | + ${ip} -4 route add default via ${router} dev ${interface} \ | ||
167 | + ${metric_arg} >/dev/null 2>&1 | ||
168 | done | ||
169 | make_resolv_conf | ||
170 | exit_with_hooks 0 | ||
171 | fi | ||
172 | - ifconfig $interface inet 0 down | ||
173 | + ${ip} -4 addr flush dev ${interface} | ||
174 | exit_with_hooks 1 | ||
175 | fi | ||
176 | |||
diff --git a/meta/recipes-connectivity/dhcp/dhcp_4.3.0.bb b/meta/recipes-connectivity/dhcp/dhcp_4.3.0.bb index 6da28faf50..13bcceb5a8 100644 --- a/meta/recipes-connectivity/dhcp/dhcp_4.3.0.bb +++ b/meta/recipes-connectivity/dhcp/dhcp_4.3.0.bb | |||
@@ -5,6 +5,7 @@ SRC_URI += "file://dhcp-3.0.3-dhclient-dbus.patch;striplevel=0 \ | |||
5 | file://link-with-lcrypto.patch \ | 5 | file://link-with-lcrypto.patch \ |
6 | file://fixsepbuild.patch \ | 6 | file://fixsepbuild.patch \ |
7 | file://dhclient-script-drop-resolv.conf.dhclient.patch \ | 7 | file://dhclient-script-drop-resolv.conf.dhclient.patch \ |
8 | file://replace-ifconfig-route.patch \ | ||
8 | " | 9 | " |
9 | 10 | ||
10 | SRC_URI[md5sum] = "1020d77e1a4c1f01b76279caff9beb80" | 11 | SRC_URI[md5sum] = "1020d77e1a4c1f01b76279caff9beb80" |