Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F133554908
D26317.id76731.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D26317.id76731.diff
View Options
Index: head/sys/net/route.c
===================================================================
--- head/sys/net/route.c
+++ head/sys/net/route.c
@@ -883,7 +883,6 @@
* Set up a routing table entry, normally
* for an interface.
*/
-#define _SOCKADDR_TMPSIZE 128 /* Not too big.. kernel stack size is limited */
static inline int
rtinit1(struct ifaddr *ifa, int cmd, int flags, int fibnum)
{
@@ -895,10 +894,10 @@
struct rt_addrinfo info;
int error = 0;
int startfib, endfib;
- char tempbuf[_SOCKADDR_TMPSIZE];
+ struct sockaddr_storage ss;
int didwork = 0;
int a_failure = 0;
- struct sockaddr_dl_short *sdl = NULL;
+ struct sockaddr_dl_short sdl;
struct rib_head *rnh;
if (flags & RTF_HOST) {
@@ -946,17 +945,15 @@
* XXX this is kinda inet specific..
*/
if (netmask != NULL) {
- rt_maskedcopy(dst, (struct sockaddr *)tempbuf, netmask);
- dst = (struct sockaddr *)tempbuf;
+ rt_maskedcopy(dst, (struct sockaddr *)&ss, netmask);
+ dst = (struct sockaddr *)&ss;
}
- } else if (cmd == RTM_ADD) {
- sdl = (struct sockaddr_dl_short *)tempbuf;
- bzero(sdl, sizeof(struct sockaddr_dl_short));
- sdl->sdl_family = AF_LINK;
- sdl->sdl_len = sizeof(struct sockaddr_dl_short);
- sdl->sdl_type = ifa->ifa_ifp->if_type;
- sdl->sdl_index = ifa->ifa_ifp->if_index;
- }
+ }
+ bzero(&sdl, sizeof(struct sockaddr_dl_short));
+ sdl.sdl_family = AF_LINK;
+ sdl.sdl_len = sizeof(struct sockaddr_dl_short);
+ sdl.sdl_type = ifa->ifa_ifp->if_type;
+ sdl.sdl_index = ifa->ifa_ifp->if_index;
/*
* Now go through all the requested tables (fibs) and do the
* requested action. Realistically, this will either be fib 0
@@ -1012,13 +1009,7 @@
info.rti_flags = flags |
(ifa->ifa_flags & ~IFA_RTSELF) | RTF_PINNED;
info.rti_info[RTAX_DST] = dst;
- /*
- * doing this for compatibility reasons
- */
- if (cmd == RTM_ADD)
- info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)sdl;
- else
- info.rti_info[RTAX_GATEWAY] = ifa->ifa_addr;
+ info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&sdl;
info.rti_info[RTAX_NETMASK] = netmask;
NET_EPOCH_ENTER(et);
error = rib_action(fibnum, cmd, &info, &rc);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Oct 27, 3:20 PM (3 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24300131
Default Alt Text
D26317.id76731.diff (2 KB)
Attached To
Mode
D26317: Consistently use the same gateway when adding/deleting interface routes.
Attached
Detach File
Event Timeline
Log In to Comment