Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146464531
D24976.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D24976.diff
View Options
Index: head/sys/netinet/ip_icmp.c
===================================================================
--- head/sys/netinet/ip_icmp.c
+++ head/sys/netinet/ip_icmp.c
@@ -764,7 +764,7 @@
struct ifnet *ifp;
struct in_ifaddr *ia;
struct in_addr t;
- struct nhop4_extended nh_ext;
+ struct nhop_object *nh;
struct mbuf *opts = NULL;
int optlen = (ip->ip_hl << 2) - sizeof(struct ip);
@@ -851,12 +851,13 @@
* When we don't have a route back to the packet source, stop here
* and drop the packet.
*/
- if (fib4_lookup_nh_ext(M_GETFIB(m), ip->ip_dst, 0, 0, &nh_ext) != 0) {
+ nh = fib4_lookup(M_GETFIB(m), ip->ip_dst, 0, NHR_NONE, 0);
+ if (nh == NULL) {
m_freem(m);
ICMPSTAT_INC(icps_noroute);
goto done;
}
- t = nh_ext.nh_src;
+ t = IA_SIN(ifatoia(nh->nh_ifa))->sin_addr;
match:
#ifdef MAC
mac_netinet_icmp_replyinplace(m);
Index: head/sys/netinet/ip_output.c
===================================================================
--- head/sys/netinet/ip_output.c
+++ head/sys/netinet/ip_output.c
@@ -512,11 +512,10 @@
mtu = ifp->if_mtu;
src = IA_SIN(ia)->sin_addr;
} else {
- struct nhop4_extended nh;
+ struct nhop_object *nh;
- bzero(&nh, sizeof(nh));
- if (fib4_lookup_nh_ext(M_GETFIB(m), ip->ip_dst, 0, 0, &nh) !=
- 0) {
+ nh = fib4_lookup(M_GETFIB(m), ip->ip_dst, 0, NHR_NONE, 0);
+ if (nh == NULL) {
#if defined(IPSEC) || defined(IPSEC_SUPPORT)
/*
* There is no route for this packet, but it is
@@ -530,8 +529,8 @@
error = EHOSTUNREACH;
goto bad;
}
- ifp = nh.nh_ifp;
- mtu = nh.nh_mtu;
+ ifp = nh->nh_ifp;
+ mtu = nh->nh_mtu;
/*
* We are rewriting here dst to be gw actually, contradicting
* comment at the beginning of the function. However, in this
@@ -540,10 +539,11 @@
* function, the dst would be rewritten by ip_output_pfil().
*/
MPASS(dst == &sin);
- dst->sin_addr = nh.nh_addr;
- ia = nh.nh_ia;
- src = nh.nh_src;
- isbroadcast = (((nh.nh_flags & (NHF_HOST | NHF_BROADCAST)) ==
+ if (nh->nh_flags & NHF_GATEWAY)
+ dst->sin_addr = nh->gw4_sa.sin_addr;
+ ia = ifatoia(nh->nh_ifa);
+ src = IA_SIN(ia)->sin_addr;
+ isbroadcast = (((nh->nh_flags & (NHF_HOST | NHF_BROADCAST)) ==
(NHF_HOST | NHF_BROADCAST)) ||
((ifp->if_flags & IFF_BROADCAST) &&
in_ifaddr_broadcast(dst->sin_addr, ia)));
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Mar 3, 9:55 PM (5 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29213321
Default Alt Text
D24976.diff (2 KB)
Attached To
Mode
D24976: Switch ip_output/icmp_reflect rt lookup calls with fib4_lookup.
Attached
Detach File
Event Timeline
Log In to Comment