mirror of https://github.com/F-Stack/f-stack.git
fix crash while set gateway6.
This commit is contained in:
parent
9208ea7922
commit
8bff657153
|
@ -518,7 +518,7 @@ ff_veth_setaddr6(struct ff_veth_softc *sc)
|
||||||
static int
|
static int
|
||||||
ff_veth_set_gateway6(struct ff_veth_softc *sc)
|
ff_veth_set_gateway6(struct ff_veth_softc *sc)
|
||||||
{
|
{
|
||||||
struct sockaddr_in6 gw;
|
struct sockaddr_in6 gw, dst, nm;;
|
||||||
struct rt_addrinfo info;
|
struct rt_addrinfo info;
|
||||||
struct rib_cmd_info rci;
|
struct rib_cmd_info rci;
|
||||||
|
|
||||||
|
@ -526,13 +526,18 @@ ff_veth_set_gateway6(struct ff_veth_softc *sc)
|
||||||
info.rti_flags = RTF_GATEWAY;
|
info.rti_flags = RTF_GATEWAY;
|
||||||
|
|
||||||
bzero(&gw, sizeof(gw));
|
bzero(&gw, sizeof(gw));
|
||||||
|
bzero(&dst, sizeof(dst));
|
||||||
|
bzero(&nm, sizeof(nm));
|
||||||
|
|
||||||
gw.sin6_len = sizeof(struct sockaddr_in6);
|
gw.sin6_len = dst.sin6_len = nm.sin6_len = sizeof(struct sockaddr_in6);
|
||||||
gw.sin6_family = AF_INET6;
|
gw.sin6_family = dst.sin6_family = nm.sin6_family = AF_INET6;
|
||||||
|
|
||||||
gw.sin6_addr = sc->gateway6;
|
gw.sin6_addr = sc->gateway6;
|
||||||
|
//dst.sin6_addr = nm.sin6_addr = 0;
|
||||||
|
|
||||||
info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&gw;
|
info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&gw;
|
||||||
|
info.rti_info[RTAX_DST] = (struct sockaddr *)&dst;
|
||||||
|
info.rti_info[RTAX_NETMASK] = (struct sockaddr *)&nm;
|
||||||
|
|
||||||
return rib_action(RT_DEFAULT_FIB, RTM_ADD, &info, &rci);
|
return rib_action(RT_DEFAULT_FIB, RTM_ADD, &info, &rci);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue