Page MenuHomeFreeBSD

D23873.id.diff
No OneTemporary

D23873.id.diff

Index: head/sys/netinet6/in6_fib.h
===================================================================
--- head/sys/netinet6/in6_fib.h
+++ head/sys/netinet6/in6_fib.h
@@ -41,14 +41,15 @@
struct in6_addr nh_addr; /* GW/DST IPv4 address */
};
-/* Does not differ from nhop6_basic */
+/* Extended nexthop info used for control protocols. */
struct nhop6_extended {
struct ifnet *nh_ifp; /* Logical egress interface */
+ struct in6_ifaddr *nh_ia; /* Associated address. */
uint16_t nh_mtu; /* nexthop mtu */
uint16_t nh_flags; /* nhop flags */
uint8_t spare[4];
struct in6_addr nh_addr; /* GW/DST IPv6 address */
- uint64_t spare2[2];
+ uint64_t spare2[1];
};
int fib6_lookup_nh_basic(uint32_t fibnum, const struct in6_addr *dst,
Index: head/sys/netinet6/in6_fib.c
===================================================================
--- head/sys/netinet6/in6_fib.c
+++ head/sys/netinet6/in6_fib.c
@@ -75,6 +75,8 @@
static struct ifnet *fib6_get_ifaifp(struct rtentry *rte);
#define RNTORT(p) ((struct rtentry *)(p))
+#define ifatoia6(ifa) ((struct in6_ifaddr *)(ifa))
+
CHK_STRUCT_ROUTE_COMPAT(struct route_in6, ro_dst);
/*
@@ -153,6 +155,7 @@
gw = (struct sockaddr_in6 *)rt_key(rte);
if (IN6_IS_ADDR_UNSPECIFIED(&gw->sin6_addr))
pnh6->nh_flags |= NHF_DEFAULT;
+ pnh6->nh_ia = ifatoia6(rte->rt_ifa);
}
/*

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 13, 10:07 AM (6 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31387086
Default Alt Text
D23873.id.diff (1 KB)

Event Timeline