diff options
author | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2019-12-31 17:26:53 +0000 |
---|---|---|
committer | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2019-12-31 17:26:53 +0000 |
commit | c83dda362e75cb34f7178236f2aa5566ac18d079 (patch) | |
tree | e28f97d92c361b1d331b72098076e1188bef0449 /sys/net/route.h | |
parent | e11c9783e1451f4113af370c21ed6afffd1316d8 (diff) | |
download | src-c83dda362e75cb34f7178236f2aa5566ac18d079.tar.gz src-c83dda362e75cb34f7178236f2aa5566ac18d079.zip |
Split gigantic rtsock route_output() into smaller functions.
Amount of changes to the original code has been intentionally minimised
to ease diffing.
The changes are mostly mechanical, with the following exceptions:
* lltable handler is now called directly based of RTF_LLINFO flag presense.
* "report" logic for updating rtm in RTM_GET/RTM_DELETE has been simplified,
fixing several potential use-after-free cases in rt_addrinfo.
* llable asserts has been replaced with error-returning, preventing kernel
crashes when lltable gw af family is invalid (root required).
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D22864
Notes
Notes:
svn path=/head/; revision=356236
Diffstat (limited to 'sys/net/route.h')
-rw-r--r-- | sys/net/route.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/net/route.h b/sys/net/route.h index e287b2372b1e..cd077db262f0 100644 --- a/sys/net/route.h +++ b/sys/net/route.h @@ -145,6 +145,8 @@ struct rtentry { */ #define rt_key(r) (*((struct sockaddr **)(&(r)->rt_nodes->rn_key))) #define rt_mask(r) (*((struct sockaddr **)(&(r)->rt_nodes->rn_mask))) +#define rt_key_const(r) (*((const struct sockaddr * const *)(&(r)->rt_nodes->rn_key))) +#define rt_mask_const(r) (*((const struct sockaddr * const *)(&(r)->rt_nodes->rn_mask))) struct sockaddr *rt_gateway; /* value */ struct ifnet *rt_ifp; /* the answer: interface to use */ struct ifaddr *rt_ifa; /* the answer: interface address to use */ |