mirror of
https://github.com/sheumann/hush.git
synced 2024-09-12 15:54:56 +00:00
ifupdown: add manual method for IPv6. Closes bug 2497.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
ec07420eb9
commit
66cb7bed33
@ -164,7 +164,7 @@ static char *get_var(const char *id, size_t idlen, struct interface_defn_t *ifd)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
static int count_netmask_bits(const char *dotted_quad)
|
static int count_netmask_bits(const char *dotted_quad)
|
||||||
{
|
{
|
||||||
// int result;
|
// int result;
|
||||||
@ -195,7 +195,7 @@ static int count_netmask_bits(const char *dotted_quad)
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
static char *parse(const char *command, struct interface_defn_t *ifd)
|
static char *parse(const char *command, struct interface_defn_t *ifd)
|
||||||
{
|
{
|
||||||
@ -258,17 +258,17 @@ static char *parse(const char *command, struct interface_defn_t *ifd)
|
|||||||
varvalue = get_var(command, nextpercent - command, ifd);
|
varvalue = get_var(command, nextpercent - command, ifd);
|
||||||
|
|
||||||
if (varvalue) {
|
if (varvalue) {
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
/* "hwaddress <class> <address>":
|
/* "hwaddress <class> <address>":
|
||||||
* unlike ifconfig, ip doesnt want <class>
|
* unlike ifconfig, ip doesnt want <class>
|
||||||
* (usually "ether" keyword). Skip it. */
|
* (usually "ether" keyword). Skip it. */
|
||||||
if (strncmp(command, "hwaddress", 9) == 0) {
|
if (strncmp(command, "hwaddress", 9) == 0) {
|
||||||
varvalue = skip_whitespace(skip_non_whitespace(varvalue));
|
varvalue = skip_whitespace(skip_non_whitespace(varvalue));
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
addstr(&result, varvalue, strlen(varvalue));
|
addstr(&result, varvalue, strlen(varvalue));
|
||||||
} else {
|
} else {
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
/* Sigh... Add a special case for 'ip' to convert from
|
/* Sigh... Add a special case for 'ip' to convert from
|
||||||
* dotted quad to bit count style netmasks. */
|
* dotted quad to bit count style netmasks. */
|
||||||
if (strncmp(command, "bnmask", 6) == 0) {
|
if (strncmp(command, "bnmask", 6) == 0) {
|
||||||
@ -284,7 +284,7 @@ static char *parse(const char *command, struct interface_defn_t *ifd)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
okay[opt_depth - 1] = 0;
|
okay[opt_depth - 1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,56 +329,64 @@ static int execute(const char *command, struct interface_defn_t *ifd, execfn *ex
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
#endif /* FEATURE_IFUPDOWN_IPV4 || FEATURE_IFUPDOWN_IPV6 */
|
||||||
|
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IPV6
|
#if ENABLE_FEATURE_IFUPDOWN_IPV6
|
||||||
|
|
||||||
static int FAST_FUNC loopback_up6(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC loopback_up6(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
int result;
|
int result;
|
||||||
result = execute("ip addr add ::1 dev %iface%", ifd, exec);
|
result = execute("ip addr add ::1 dev %iface%", ifd, exec);
|
||||||
result += execute("ip link set %iface% up", ifd, exec);
|
result += execute("ip link set %iface% up", ifd, exec);
|
||||||
return ((result == 2) ? 2 : 0);
|
return ((result == 2) ? 2 : 0);
|
||||||
#else
|
# else
|
||||||
return execute("ifconfig %iface% add ::1", ifd, exec);
|
return execute("ifconfig %iface% add ::1", ifd, exec);
|
||||||
#endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int FAST_FUNC loopback_down6(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC loopback_down6(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
return execute("ip link set %iface% down", ifd, exec);
|
return execute("ip link set %iface% down", ifd, exec);
|
||||||
#else
|
# else
|
||||||
return execute("ifconfig %iface% del ::1", ifd, exec);
|
return execute("ifconfig %iface% del ::1", ifd, exec);
|
||||||
#endif
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int FAST_FUNC manual_up_down6(struct interface_defn_t *ifd UNUSED_PARAM, execfn *exec UNUSED_PARAM)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int FAST_FUNC static_up6(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC static_up6(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
result = execute("ip addr add %address%/%netmask% dev %iface%[[ label %label%]]", ifd, exec);
|
result = execute("ip addr add %address%/%netmask% dev %iface%[[ label %label%]]", ifd, exec);
|
||||||
result += execute("ip link set[[ mtu %mtu%]][[ addr %hwaddress%]] %iface% up", ifd, exec);
|
result += execute("ip link set[[ mtu %mtu%]][[ addr %hwaddress%]] %iface% up", ifd, exec);
|
||||||
/* Was: "[[ ip ....%gateway% ]]". Removed extra spaces w/o checking */
|
/* Was: "[[ ip ....%gateway% ]]". Removed extra spaces w/o checking */
|
||||||
result += execute("[[ip route add ::/0 via %gateway%]]", ifd, exec);
|
result += execute("[[ip route add ::/0 via %gateway%]]", ifd, exec);
|
||||||
#else
|
# else
|
||||||
result = execute("ifconfig %iface%[[ media %media%]][[ hw %hwaddress%]][[ mtu %mtu%]] up", ifd, exec);
|
result = execute("ifconfig %iface%[[ media %media%]][[ hw %hwaddress%]][[ mtu %mtu%]] up", ifd, exec);
|
||||||
result += execute("ifconfig %iface% add %address%/%netmask%", ifd, exec);
|
result += execute("ifconfig %iface% add %address%/%netmask%", ifd, exec);
|
||||||
result += execute("[[route -A inet6 add ::/0 gw %gateway%]]", ifd, exec);
|
result += execute("[[route -A inet6 add ::/0 gw %gateway%]]", ifd, exec);
|
||||||
#endif
|
# endif
|
||||||
return ((result == 3) ? 3 : 0);
|
return ((result == 3) ? 3 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int FAST_FUNC static_down6(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC static_down6(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
return execute("ip link set %iface% down", ifd, exec);
|
return execute("ip link set %iface% down", ifd, exec);
|
||||||
#else
|
# else
|
||||||
return execute("ifconfig %iface% down", ifd, exec);
|
return execute("ifconfig %iface% down", ifd, exec);
|
||||||
#endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
static int FAST_FUNC v4tunnel_up(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC v4tunnel_up(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
@ -394,14 +402,15 @@ static int FAST_FUNC v4tunnel_down(struct interface_defn_t * ifd, execfn * exec)
|
|||||||
{
|
{
|
||||||
return execute("ip tunnel del %iface%", ifd, exec);
|
return execute("ip tunnel del %iface%", ifd, exec);
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
static const struct method_t methods6[] = {
|
static const struct method_t methods6[] = {
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
{ "v4tunnel", v4tunnel_up, v4tunnel_down, },
|
{ "v4tunnel" , v4tunnel_up , v4tunnel_down , },
|
||||||
#endif
|
# endif
|
||||||
{ "static", static_up6, static_down6, },
|
{ "static" , static_up6 , static_down6 , },
|
||||||
{ "loopback", loopback_up6, loopback_down6, },
|
{ "manual" , manual_up_down6 , manual_up_down6 , },
|
||||||
|
{ "loopback" , loopback_up6 , loopback_down6 , },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct address_family_t addr_inet6 = {
|
static const struct address_family_t addr_inet6 = {
|
||||||
@ -409,43 +418,46 @@ static const struct address_family_t addr_inet6 = {
|
|||||||
ARRAY_SIZE(methods6),
|
ARRAY_SIZE(methods6),
|
||||||
methods6
|
methods6
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* FEATURE_IFUPDOWN_IPV6 */
|
#endif /* FEATURE_IFUPDOWN_IPV6 */
|
||||||
|
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IPV4
|
#if ENABLE_FEATURE_IFUPDOWN_IPV4
|
||||||
|
|
||||||
static int FAST_FUNC loopback_up(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC loopback_up(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
int result;
|
int result;
|
||||||
result = execute("ip addr add 127.0.0.1/8 dev %iface%", ifd, exec);
|
result = execute("ip addr add 127.0.0.1/8 dev %iface%", ifd, exec);
|
||||||
result += execute("ip link set %iface% up", ifd, exec);
|
result += execute("ip link set %iface% up", ifd, exec);
|
||||||
return ((result == 2) ? 2 : 0);
|
return ((result == 2) ? 2 : 0);
|
||||||
#else
|
# else
|
||||||
return execute("ifconfig %iface% 127.0.0.1 up", ifd, exec);
|
return execute("ifconfig %iface% 127.0.0.1 up", ifd, exec);
|
||||||
#endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int FAST_FUNC loopback_down(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC loopback_down(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
int result;
|
int result;
|
||||||
result = execute("ip addr flush dev %iface%", ifd, exec);
|
result = execute("ip addr flush dev %iface%", ifd, exec);
|
||||||
result += execute("ip link set %iface% down", ifd, exec);
|
result += execute("ip link set %iface% down", ifd, exec);
|
||||||
return ((result == 2) ? 2 : 0);
|
return ((result == 2) ? 2 : 0);
|
||||||
#else
|
# else
|
||||||
return execute("ifconfig %iface% 127.0.0.1 down", ifd, exec);
|
return execute("ifconfig %iface% 127.0.0.1 down", ifd, exec);
|
||||||
#endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int FAST_FUNC static_up(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC static_up(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
result = execute("ip addr add %address%/%bnmask%[[ broadcast %broadcast%]] "
|
result = execute("ip addr add %address%/%bnmask%[[ broadcast %broadcast%]] "
|
||||||
"dev %iface%[[ peer %pointopoint%]][[ label %label%]]", ifd, exec);
|
"dev %iface%[[ peer %pointopoint%]][[ label %label%]]", ifd, exec);
|
||||||
result += execute("ip link set[[ mtu %mtu%]][[ addr %hwaddress%]] %iface% up", ifd, exec);
|
result += execute("ip link set[[ mtu %mtu%]][[ addr %hwaddress%]] %iface% up", ifd, exec);
|
||||||
result += execute("[[ip route add default via %gateway% dev %iface%]]", ifd, exec);
|
result += execute("[[ip route add default via %gateway% dev %iface%]]", ifd, exec);
|
||||||
return ((result == 3) ? 3 : 0);
|
return ((result == 3) ? 3 : 0);
|
||||||
#else
|
# else
|
||||||
/* ifconfig said to set iface up before it processes hw %hwaddress%,
|
/* ifconfig said to set iface up before it processes hw %hwaddress%,
|
||||||
* which then of course fails. Thus we run two separate ifconfig */
|
* which then of course fails. Thus we run two separate ifconfig */
|
||||||
result = execute("ifconfig %iface%[[ hw %hwaddress%]][[ media %media%]][[ mtu %mtu%]] up",
|
result = execute("ifconfig %iface%[[ hw %hwaddress%]][[ media %media%]][[ mtu %mtu%]] up",
|
||||||
@ -455,26 +467,26 @@ static int FAST_FUNC static_up(struct interface_defn_t *ifd, execfn *exec)
|
|||||||
ifd, exec);
|
ifd, exec);
|
||||||
result += execute("[[route add default gw %gateway% %iface%]]", ifd, exec);
|
result += execute("[[route add default gw %gateway% %iface%]]", ifd, exec);
|
||||||
return ((result == 3) ? 3 : 0);
|
return ((result == 3) ? 3 : 0);
|
||||||
#endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int FAST_FUNC static_down(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC static_down(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
result = execute("ip addr flush dev %iface%", ifd, exec);
|
result = execute("ip addr flush dev %iface%", ifd, exec);
|
||||||
result += execute("ip link set %iface% down", ifd, exec);
|
result += execute("ip link set %iface% down", ifd, exec);
|
||||||
#else
|
# else
|
||||||
/* result = execute("[[route del default gw %gateway% %iface%]]", ifd, exec); */
|
/* result = execute("[[route del default gw %gateway% %iface%]]", ifd, exec); */
|
||||||
/* Bringing the interface down deletes the routes in itself.
|
/* Bringing the interface down deletes the routes in itself.
|
||||||
Otherwise this fails if we reference 'gateway' when using this from dhcp_down */
|
Otherwise this fails if we reference 'gateway' when using this from dhcp_down */
|
||||||
result = 1;
|
result = 1;
|
||||||
result += execute("ifconfig %iface% down", ifd, exec);
|
result += execute("ifconfig %iface% down", ifd, exec);
|
||||||
#endif
|
# endif
|
||||||
return ((result == 2) ? 2 : 0);
|
return ((result == 2) ? 2 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
|
# if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
|
||||||
struct dhcp_client_t {
|
struct dhcp_client_t {
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *startcmd;
|
const char *startcmd;
|
||||||
@ -500,21 +512,21 @@ static const struct dhcp_client_t ext_dhcp_clients[] = {
|
|||||||
"kill `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null",
|
"kill `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
#endif /* ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCPC */
|
# endif /* FEATURE_IFUPDOWN_EXTERNAL_DHCPC */
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
|
# if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
|
||||||
static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
/* ip doesn't up iface when it configures it (unlike ifconfig) */
|
/* ip doesn't up iface when it configures it (unlike ifconfig) */
|
||||||
if (!execute("ip link set[[ addr %hwaddress%]] %iface% up", ifd, exec))
|
if (!execute("ip link set[[ addr %hwaddress%]] %iface% up", ifd, exec))
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
# else
|
||||||
/* needed if we have hwaddress on dhcp iface */
|
/* needed if we have hwaddress on dhcp iface */
|
||||||
if (!execute("ifconfig %iface%[[ hw %hwaddress%]] up", ifd, exec))
|
if (!execute("ifconfig %iface%[[ hw %hwaddress%]] up", ifd, exec))
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
# endif
|
||||||
for (i = 0; i < ARRAY_SIZE(ext_dhcp_clients); i++) {
|
for (i = 0; i < ARRAY_SIZE(ext_dhcp_clients); i++) {
|
||||||
if (exists_execable(ext_dhcp_clients[i].name))
|
if (exists_execable(ext_dhcp_clients[i].name))
|
||||||
return execute(ext_dhcp_clients[i].startcmd, ifd, exec);
|
return execute(ext_dhcp_clients[i].startcmd, ifd, exec);
|
||||||
@ -522,31 +534,31 @@ static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
|
|||||||
bb_error_msg("no dhcp clients found");
|
bb_error_msg("no dhcp clients found");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#elif ENABLE_UDHCPC
|
# elif ENABLE_UDHCPC
|
||||||
static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IP
|
# if ENABLE_FEATURE_IFUPDOWN_IP
|
||||||
/* ip doesn't up iface when it configures it (unlike ifconfig) */
|
/* ip doesn't up iface when it configures it (unlike ifconfig) */
|
||||||
if (!execute("ip link set[[ addr %hwaddress%]] %iface% up", ifd, exec))
|
if (!execute("ip link set[[ addr %hwaddress%]] %iface% up", ifd, exec))
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
# else
|
||||||
/* needed if we have hwaddress on dhcp iface */
|
/* needed if we have hwaddress on dhcp iface */
|
||||||
if (!execute("ifconfig %iface%[[ hw %hwaddress%]] up", ifd, exec))
|
if (!execute("ifconfig %iface%[[ hw %hwaddress%]] up", ifd, exec))
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
# endif
|
||||||
return execute("udhcpc " UDHCPC_CMD_OPTIONS " -p /var/run/udhcpc.%iface%.pid "
|
return execute("udhcpc " UDHCPC_CMD_OPTIONS " -p /var/run/udhcpc.%iface%.pid "
|
||||||
"-i %iface%[[ -H %hostname%]][[ -c %client%]][[ -s %script%]][[ %udhcpc_opts%]]",
|
"-i %iface%[[ -H %hostname%]][[ -c %client%]][[ -s %script%]][[ %udhcpc_opts%]]",
|
||||||
ifd, exec);
|
ifd, exec);
|
||||||
}
|
}
|
||||||
#else
|
# else
|
||||||
static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd UNUSED_PARAM,
|
static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd UNUSED_PARAM,
|
||||||
execfn *exec UNUSED_PARAM)
|
execfn *exec UNUSED_PARAM)
|
||||||
{
|
{
|
||||||
return 0; /* no dhcp support */
|
return 0; /* no dhcp support */
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
|
# if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
|
||||||
static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
@ -569,7 +581,7 @@ static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
|
|||||||
result += static_down(ifd, exec);
|
result += static_down(ifd, exec);
|
||||||
return ((result == 3) ? 3 : 0);
|
return ((result == 3) ? 3 : 0);
|
||||||
}
|
}
|
||||||
#elif ENABLE_UDHCPC
|
# elif ENABLE_UDHCPC
|
||||||
static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
|
static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
@ -586,13 +598,13 @@ static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
|
|||||||
result += static_down(ifd, exec);
|
result += static_down(ifd, exec);
|
||||||
return ((result == 3) ? 3 : 0);
|
return ((result == 3) ? 3 : 0);
|
||||||
}
|
}
|
||||||
#else
|
# else
|
||||||
static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd UNUSED_PARAM,
|
static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd UNUSED_PARAM,
|
||||||
execfn *exec UNUSED_PARAM)
|
execfn *exec UNUSED_PARAM)
|
||||||
{
|
{
|
||||||
return 0; /* no dhcp support */
|
return 0; /* no dhcp support */
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
static int FAST_FUNC manual_up_down(struct interface_defn_t *ifd UNUSED_PARAM, execfn *exec UNUSED_PARAM)
|
static int FAST_FUNC manual_up_down(struct interface_defn_t *ifd UNUSED_PARAM, execfn *exec UNUSED_PARAM)
|
||||||
{
|
{
|
||||||
@ -644,7 +656,8 @@ static const struct address_family_t addr_inet = {
|
|||||||
methods
|
methods
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* if ENABLE_FEATURE_IFUPDOWN_IPV4 */
|
#endif /* FEATURE_IFUPDOWN_IPV4 */
|
||||||
|
|
||||||
|
|
||||||
/* Returns pointer to the next word, or NULL.
|
/* Returns pointer to the next word, or NULL.
|
||||||
* In 1st case, advances *buf to the word after this one.
|
* In 1st case, advances *buf to the word after this one.
|
||||||
|
Loading…
Reference in New Issue
Block a user