fix crash while set gateway6.

This commit is contained in:
fengbojiang 2022-09-01 16:33:39 +08:00
parent 9208ea7922
commit 8bff657153
1 changed files with 11 additions and 6 deletions

View File

@ -518,7 +518,7 @@ ff_veth_setaddr6(struct ff_veth_softc *sc)
static int
ff_veth_set_gateway6(struct ff_veth_softc *sc)
{
struct sockaddr_in6 gw;
struct sockaddr_in6 gw, dst, nm;;
struct rt_addrinfo info;
struct rib_cmd_info rci;
@ -526,13 +526,18 @@ ff_veth_set_gateway6(struct ff_veth_softc *sc)
info.rti_flags = RTF_GATEWAY;
bzero(&gw, sizeof(gw));
bzero(&dst, sizeof(dst));
bzero(&nm, sizeof(nm));
gw.sin6_len = sizeof(struct sockaddr_in6);
gw.sin6_family = AF_INET6;
gw.sin6_len = dst.sin6_len = nm.sin6_len = sizeof(struct sockaddr_in6);
gw.sin6_family = dst.sin6_family = nm.sin6_family = AF_INET6;
gw.sin6_addr = sc->gateway6;
//dst.sin6_addr = nm.sin6_addr = 0;
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);
}