Page MenuHomeFreeBSD

D30811.diff
No OneTemporary

D30811.diff

diff --git a/sys/netinet/in.c b/sys/netinet/in.c
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -815,11 +815,6 @@
ia->ia_dstaddr.sin_addr.s_addr == ia->ia_addr.sin_addr.s_addr)
return (false);
- /* Case 2: skip /32 prefixes */
- if (!(ifp->if_flags & IFF_POINTOPOINT) &&
- (ia->ia_sockmask.sin_addr.s_addr == INADDR_BROADCAST))
- return (false);
-
return (true);
}
@@ -935,6 +930,14 @@
{
int error;
+ /*
+ * Skip /32 interface aliases.
+ */
+ if (!(target->ia_ifp->if_flags & (IFF_POINTOPOINT|IFF_LOOPBACK)) &&
+ (target->ia_sockmask.sin_addr.s_addr == INADDR_BROADCAST)) {
+ rt_addrmsg(RTM_ADD, &target->ia_ifa, target->ia_ifp->if_fib);
+ return (0);
+ }
if (in_hasrtprefix(target)) {
if (V_nosameprefix)
return (EEXIST);

File Metadata

Mime Type
text/plain
Expires
Fri, Feb 6, 8:36 PM (1 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28450243
Default Alt Text
D30811.diff (769 B)

Event Timeline