summaryrefslogtreecommitdiffstats
path: root/sys/net/if_var.h
diff options
context:
space:
mode:
authorqingli <qingli@FreeBSD.org>2009-12-30 21:35:34 +0000
committerqingli <qingli@FreeBSD.org>2009-12-30 21:35:34 +0000
commited965a92bc17f25c5049fbd529d10a9e94f8a3a7 (patch)
tree8e2dcb46479d9e8deaedba15ff39e4bf06edf8c9 /sys/net/if_var.h
parent05e668091314a2bdc6f8d36ac2e8abf4c424a09a (diff)
downloadFreeBSD-src-ed965a92bc17f25c5049fbd529d10a9e94f8a3a7.zip
FreeBSD-src-ed965a92bc17f25c5049fbd529d10a9e94f8a3a7.tar.gz
The proxy arp entries could not be added into the system over the
IFF_POINTOPOINT link types. The reason was due to the routing entry returned from the kernel covering the remote end is of an interface type that does not support ARP. This patch fixes this problem by providing a hint to the kernel routing code, which indicates the prefix route instead of the PPP host route should be returned to the caller. Since a host route to the local end point is also added into the routing table, and there could be multiple such instantiations due to multiple PPP links can be created with the same local end IP address, this patch also fixes the loopback route installation failure problem observed prior to this patch. The reference count of loopback route to local end would be either incremented or decremented. The first instantiation would create the entry and the last removal would delete the route entry. MFC after: 5 days
Diffstat (limited to 'sys/net/if_var.h')
-rw-r--r--sys/net/if_var.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/net/if_var.h b/sys/net/if_var.h
index 519e6aa..148d72c 100644
--- a/sys/net/if_var.h
+++ b/sys/net/if_var.h
@@ -710,6 +710,7 @@ struct ifaddr {
struct mtx ifa_mtx;
};
#define IFA_ROUTE RTF_UP /* route installed */
+#define IFA_RTSELF RTF_HOST /* loopback route to self installed */
/* for compatibility with other BSDs */
#define ifa_list ifa_link
@@ -843,6 +844,7 @@ void if_ref(struct ifnet *);
void if_rele(struct ifnet *);
int if_setlladdr(struct ifnet *, const u_char *, int);
void if_up(struct ifnet *);
+/*void ifinit(void);*/ /* declared in systm.h for main() */
int ifioctl(struct socket *, u_long, caddr_t, struct thread *);
int ifpromisc(struct ifnet *, int);
struct ifnet *ifunit(const char *);
OpenPOWER on IntegriCloud