Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
osv
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Verlässliche Systemsoftware
projects
osv
Commits
1348024f
Commit
1348024f
authored
12 years ago
by
Guy Zana
Browse files
Options
Downloads
Patches
Plain Diff
net: cleaned up route.c, route.h and resolving stubbed references
parent
7aed48d2
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
bsd/porting/sync_stub.h
+1
-0
1 addition, 0 deletions
bsd/porting/sync_stub.h
bsd/sys/net/route.c
+23
-37
23 additions, 37 deletions
bsd/sys/net/route.c
bsd/sys/net/route.h
+9
-17
9 additions, 17 deletions
bsd/sys/net/route.h
with
33 additions
and
54 deletions
bsd/porting/sync_stub.h
+
1
−
0
View file @
1348024f
...
@@ -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)
...
...
This diff is collapsed.
Click to expand it.
bsd/sys/net/route.c
+
23
−
37
View file @
1348024f
...
@@ -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
)
{
...
...
This diff is collapsed.
Click to expand it.
bsd/sys/net/route.h
+
9
−
17
View file @
1348024f
...
@@ -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
cmute
x
rt_mtx
;
/* mutex for routing entry */
struct
mt
x
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:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment