Skip to content
Snippets Groups Projects
Commit 1348024f authored by Guy Zana's avatar Guy Zana
Browse files

net: cleaned up route.c, route.h and resolving stubbed references

parent 7aed48d2
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ struct mtx { ...@@ -8,6 +8,7 @@ struct mtx {
}; };
#define MTX_DEF 0x00000000 /* DEFAULT (sleep) lock */ #define MTX_DEF 0x00000000 /* DEFAULT (sleep) lock */
#define MTX_DUPOK 0x00000010 /* Don't check for duplicate acquires */
#define MA_OWNED (0x01) #define MA_OWNED (0x01)
#define MA_NOTOWNED (0x02) #define MA_NOTOWNED (0x02)
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
***********************************************************************/ ***********************************************************************/
#include <bsd/porting/netport.h> #include <bsd/porting/netport.h>
#include <assert.h> #include <bsd/porting/sync_stub.h>
#include <bsd/sys/sys/param.h> #include <bsd/sys/sys/param.h>
#include <bsd/sys/sys/mbuf.h> #include <bsd/sys/sys/mbuf.h>
...@@ -69,8 +69,6 @@ ...@@ -69,8 +69,6 @@
#endif #endif
u_int rt_numfibs = RT_NUMFIBS; u_int rt_numfibs = RT_NUMFIBS;
#if 0
SYSCTL_UINT(_net, OID_AUTO, fibs, CTLFLAG_RD, &rt_numfibs, 0, ""); SYSCTL_UINT(_net, OID_AUTO, fibs, CTLFLAG_RD, &rt_numfibs, 0, "");
/* /*
* Allow the boot code to allow LESS than RT_MAXFIBS to be used. * Allow the boot code to allow LESS than RT_MAXFIBS to be used.
...@@ -82,7 +80,6 @@ SYSCTL_UINT(_net, OID_AUTO, fibs, CTLFLAG_RD, &rt_numfibs, 0, ""); ...@@ -82,7 +80,6 @@ SYSCTL_UINT(_net, OID_AUTO, fibs, CTLFLAG_RD, &rt_numfibs, 0, "");
* address family). * address family).
*/ */
TUNABLE_INT("net.fibs", &rt_numfibs); TUNABLE_INT("net.fibs", &rt_numfibs);
#endif
/* /*
* By default add routes to all fibs for new interfaces. * By default add routes to all fibs for new interfaces.
...@@ -95,12 +92,9 @@ TUNABLE_INT("net.fibs", &rt_numfibs); ...@@ -95,12 +92,9 @@ TUNABLE_INT("net.fibs", &rt_numfibs);
* from the network stack context. * from the network stack context.
*/ */
u_int rt_add_addr_allfibs = 1; u_int rt_add_addr_allfibs = 1;
#if 0
SYSCTL_UINT(_net, OID_AUTO, add_addr_allfibs, CTLFLAG_RW, SYSCTL_UINT(_net, OID_AUTO, add_addr_allfibs, CTLFLAG_RW,
&rt_add_addr_allfibs, 0, ""); &rt_add_addr_allfibs, 0, "");
TUNABLE_INT("net.add_addr_allfibs", &rt_add_addr_allfibs); TUNABLE_INT("net.add_addr_allfibs", &rt_add_addr_allfibs);
#endif
VNET_DEFINE(struct rtstat, rtstat); VNET_DEFINE(struct rtstat, rtstat);
#define V_rtstat VNET(rtstat) #define V_rtstat VNET(rtstat)
...@@ -130,12 +124,24 @@ VNET_DEFINE(int, rttrash); /* routes not in table but not freed */ ...@@ -130,12 +124,24 @@ VNET_DEFINE(int, rttrash); /* routes not in table but not freed */
static VNET_DEFINE(uma_zone_t, rtzone); /* Routing table UMA zone. */ static VNET_DEFINE(uma_zone_t, rtzone); /* Routing table UMA zone. */
#define V_rtzone VNET(rtzone) #define V_rtzone VNET(rtzone)
#if 0
/* /*
* FIXME: * handler for net.my_fibnum
* OSv: fibnum is saved per thread
*/ */
static int
sysctl_my_fibnum(SYSCTL_HANDLER_ARGS)
{
int fibnum;
int error;
fibnum = curthread->td_proc->p_fibnum;
error = sysctl_handle_int(oidp, &fibnum, 0, req);
return (error);
}
SYSCTL_PROC(_net, OID_AUTO, my_fibnum, CTLTYPE_INT|CTLFLAG_RD,
NULL, 0, &sysctl_my_fibnum, "I", "default FIB of caller");
#endif
static __inline struct radix_node_head ** static __inline struct radix_node_head **
rt_tables_get_rnh_ptr(int table, int fam) rt_tables_get_rnh_ptr(int table, int fam)
...@@ -181,15 +187,9 @@ void route_init(void) ...@@ -181,15 +187,9 @@ void route_init(void)
if (dom->dom_maxrtkey > max_keylen) if (dom->dom_maxrtkey > max_keylen)
max_keylen = dom->dom_maxrtkey; max_keylen = dom->dom_maxrtkey;
/* FIXME: Hack this for now, we don't have domains yet... */
max_keylen = sizeof(struct sockaddr_in);
rn_init(max_keylen); /* init all zeroes, all ones, mask table */ rn_init(max_keylen); /* init all zeroes, all ones, mask table */
} }
#if 0
SYSINIT(route_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, route_init, 0); SYSINIT(route_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, route_init, 0);
#endif
void vnet_route_init(void) void vnet_route_init(void)
{ {
...@@ -219,17 +219,14 @@ void vnet_route_init(void) ...@@ -219,17 +219,14 @@ void vnet_route_init(void)
* AF_INET and AF_INET6 which don't need it anyhow). * AF_INET and AF_INET6 which don't need it anyhow).
*/ */
rnh = rt_tables_get_rnh_ptr(table, fam); rnh = rt_tables_get_rnh_ptr(table, fam);
assert(rnh != NULL); if (rnh == NULL)
panic("%s: rnh NULL", __func__);
dom->dom_rtattach((void **)rnh, dom->dom_rtoffset); dom->dom_rtattach((void **)rnh, dom->dom_rtoffset);
} }
} }
} }
#if 0
VNET_SYSINIT(vnet_route_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_FOURTH, VNET_SYSINIT(vnet_route_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_FOURTH,
vnet_route_init, 0); vnet_route_init, 0);
#endif
#ifndef _SYS_SYSPROTO_H_ #ifndef _SYS_SYSPROTO_H_
struct setfib_args { struct setfib_args {
...@@ -317,10 +314,7 @@ rtalloc1_fib(struct sockaddr *dst, int report, u_long ignflags, ...@@ -317,10 +314,7 @@ rtalloc1_fib(struct sockaddr *dst, int report, u_long ignflags,
struct radix_node *rn; struct radix_node *rn;
struct rtentry *newrt; struct rtentry *newrt;
struct rt_addrinfo info; struct rt_addrinfo info;
/* FIXME: OSv: remove unused variables */
#if 0
int err = 0, msgtype = RTM_MISS; int err = 0, msgtype = RTM_MISS;
#endif
int needlock; int needlock;
KASSERT((fibnum < rt_numfibs), ("rtalloc1_fib: bad fibnum")); KASSERT((fibnum < rt_numfibs), ("rtalloc1_fib: bad fibnum"));
...@@ -376,8 +370,7 @@ miss: ...@@ -376,8 +370,7 @@ miss:
*/ */
bzero(&info, sizeof(info)); bzero(&info, sizeof(info));
info.rti_info[RTAX_DST] = dst; info.rti_info[RTAX_DST] = dst;
/* FIXME: OSV: uncomment... */ rt_missmsg_fib(msgtype, &info, 0, err, fibnum);
// rt_missmsg_fib(msgtype, &info, 0, err, fibnum);
} }
done: done:
if (newrt) if (newrt)
...@@ -603,8 +596,7 @@ out: ...@@ -603,8 +596,7 @@ out:
info.rti_info[RTAX_GATEWAY] = gateway; info.rti_info[RTAX_GATEWAY] = gateway;
info.rti_info[RTAX_NETMASK] = netmask; info.rti_info[RTAX_NETMASK] = netmask;
info.rti_info[RTAX_AUTHOR] = src; info.rti_info[RTAX_AUTHOR] = src;
/* FIXME: OSV: uncomment... */ rt_missmsg_fib(RTM_REDIRECT, &info, flags, error, fibnum);
// rt_missmsg_fib(RTM_REDIRECT, &info, flags, error, fibnum);
if (ifa != NULL) if (ifa != NULL)
ifa_free(ifa); ifa_free(ifa);
} }
...@@ -629,14 +621,9 @@ rtioctl_fib(u_long req, caddr_t data, u_int fibnum) ...@@ -629,14 +621,9 @@ rtioctl_fib(u_long req, caddr_t data, u_int fibnum)
* prison-root to make it this far if raw sockets have been enabled * prison-root to make it this far if raw sockets have been enabled
* in jails. * in jails.
*/ */
/* FIXME: OSv: remove */
return ENXIO;
#ifdef INET #ifdef INET
/* FIXME: OSv: uncomment... */ /* Multicast goop, grrr... */
/* Multicast goop, grrr... */ return mrt_ioctl ? mrt_ioctl(req, data, fibnum) : EOPNOTSUPP;
// return mrt_ioctl ? mrt_ioctl(req, data, fibnum) : EOPNOTSUPP;
#else /* INET */ #else /* INET */
return ENXIO; return ENXIO;
#endif /* INET */ #endif /* INET */
...@@ -1421,8 +1408,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int flags, int fibnum) ...@@ -1421,8 +1408,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int flags, int fibnum)
} }
RT_ADDREF(rt); RT_ADDREF(rt);
RT_UNLOCK(rt); RT_UNLOCK(rt);
/* FIXME: osv - uncomment, notify sock layer */ rt_newaddrmsg_fib(cmd, ifa, error, rt, fibnum);
// rt_newaddrmsg_fib(cmd, ifa, error, rt, fibnum);
RT_LOCK(rt); RT_LOCK(rt);
RT_REMREF(rt); RT_REMREF(rt);
if (cmd == RTM_DELETE) { if (cmd == RTM_DELETE) {
......
...@@ -136,7 +136,7 @@ struct rtentry { ...@@ -136,7 +136,7 @@ struct rtentry {
u_int rt_fibnum; /* which FIB */ u_int rt_fibnum; /* which FIB */
#ifdef _KERNEL #ifdef _KERNEL
/* XXX ugly, user apps use this definition but don't have a mtx def */ /* XXX ugly, user apps use this definition but don't have a mtx def */
struct cmutex rt_mtx; /* mutex for routing entry */ struct mtx rt_mtx; /* mutex for routing entry */
#endif #endif
}; };
...@@ -311,11 +311,12 @@ struct rt_addrinfo { ...@@ -311,11 +311,12 @@ struct rt_addrinfo {
#define RT_LINK_IS_UP(ifp) (!((ifp)->if_capabilities & IFCAP_LINKSTATE) \ #define RT_LINK_IS_UP(ifp) (!((ifp)->if_capabilities & IFCAP_LINKSTATE) \
|| (ifp)->if_link_state == LINK_STATE_UP) || (ifp)->if_link_state == LINK_STATE_UP)
#define RT_LOCK_INIT(_rt) bzero((void*)&(_rt)->rt_mtx, sizeof(struct cmutex)) #define RT_LOCK_INIT(_rt) \
#define RT_LOCK(_rt) mutex_lock(&(_rt)->rt_mtx) mtx_init(&(_rt)->rt_mtx, "rtentry", NULL, MTX_DEF | MTX_DUPOK)
#define RT_UNLOCK(_rt) mutex_unlock(&(_rt)->rt_mtx) #define RT_LOCK(_rt) mtx_lock(&(_rt)->rt_mtx)
#define RT_LOCK_DESTROY(_rt) do{}while(0) #define RT_UNLOCK(_rt) mtx_unlock(&(_rt)->rt_mtx)
#define RT_LOCK_ASSERT(_rt) do{}while(0) #define RT_LOCK_DESTROY(_rt) mtx_destroy(&(_rt)->rt_mtx)
#define RT_LOCK_ASSERT(_rt) mtx_assert(&(_rt)->rt_mtx, MA_OWNED)
#define RT_ADDREF(_rt) do { \ #define RT_ADDREF(_rt) do { \
RT_LOCK_ASSERT(_rt); \ RT_LOCK_ASSERT(_rt); \
...@@ -363,8 +364,6 @@ struct radix_node_head *rt_tables_get_rnh(int, int); ...@@ -363,8 +364,6 @@ struct radix_node_head *rt_tables_get_rnh(int, int);
struct ifmultiaddr; struct ifmultiaddr;
/* FIXME: OSv: undef some function - used for sock layer notifications */
#if 0
void rt_ieee80211msg(struct ifnet *, int, void *, size_t); void rt_ieee80211msg(struct ifnet *, int, void *, size_t);
void rt_ifannouncemsg(struct ifnet *, int); void rt_ifannouncemsg(struct ifnet *, int);
void rt_ifmsg(struct ifnet *); void rt_ifmsg(struct ifnet *);
...@@ -373,15 +372,8 @@ void rt_missmsg_fib(int, struct rt_addrinfo *, int, int, int); ...@@ -373,15 +372,8 @@ void rt_missmsg_fib(int, struct rt_addrinfo *, int, int, int);
void rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *); void rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *);
void rt_newaddrmsg_fib(int, struct ifaddr *, int, struct rtentry *, int); void rt_newaddrmsg_fib(int, struct ifaddr *, int, struct rtentry *, int);
void rt_newmaddrmsg(int, struct ifmultiaddr *); void rt_newmaddrmsg(int, struct ifmultiaddr *);
#else int rt_setgate(struct rtentry *, struct sockaddr *, struct sockaddr *);
#define rt_newaddrmsg(...) do{}while(0) void rt_maskedcopy(struct sockaddr *, struct sockaddr *, struct sockaddr *);
#define rt_newmaddrmsg(...) do{}while(0)
#define rt_ifannouncemsg(...) do{}while(0)
#define rt_ifmsg(...) do{}while(0)
#endif
int rt_setgate(struct rtentry *, struct sockaddr *, struct sockaddr *);
void rt_maskedcopy(struct sockaddr *, struct sockaddr *, struct sockaddr *);
/* /*
* Note the following locking behavior: * Note the following locking behavior:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment