From owner-p4-projects@FreeBSD.ORG Tue Oct 30 04:31:19 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2858216A418; Tue, 30 Oct 2007 04:31:19 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C46A16A46B for ; Tue, 30 Oct 2007 04:31:18 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7C10513C4B8 for ; Tue, 30 Oct 2007 04:31:18 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l9U4VIVj005687 for ; Tue, 30 Oct 2007 04:31:18 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l9U4VIw8005684 for perforce@freebsd.org; Tue, 30 Oct 2007 04:31:18 GMT (envelope-from kmacy@freebsd.org) Date: Tue, 30 Oct 2007 04:31:18 GMT Message-Id: <200710300431.l9U4VIw8005684@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 128319 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Oct 2007 04:31:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=128319 Change 128319 by kmacy@kmacy:storage:toestack on 2007/10/30 04:30:42 change route_eventhandler to take 2 rtentry arguments for redirect updates Affected files ... .. //depot/projects/toestack/sys/net/route.c#6 edit .. //depot/projects/toestack/sys/net/route.h#6 edit .. //depot/projects/toestack/sys/netinet/if_ether.c#8 edit .. //depot/projects/toestack/sys/netinet/ip_icmp.c#5 edit Differences ... ==== //depot/projects/toestack/sys/net/route.c#6 (text+ko) ==== @@ -442,7 +442,7 @@ int flags, struct sockaddr *src) { - struct rtentry *rt; + struct rtentry *rt, *rt0 = NULL; int error = 0; short *stat = NULL; struct rt_addrinfo info; @@ -486,8 +486,8 @@ * Create new route, rather than smashing route to net. */ create: - if (rt) - rtfree(rt); + rt0 = rt; + flags |= RTF_GATEWAY | RTF_DYNAMIC; bzero((caddr_t)&info, sizeof(info)); info.rti_info[RTAX_DST] = dst; @@ -500,9 +500,12 @@ error = rtrequest1(RTM_ADD, &info, &rt); if (rt != NULL) { RT_LOCK(rt); - EVENTHANDLER_INVOKE(route_event, RTEVENT_REDIRECT_UPDATE, rt); + EVENTHANDLER_INVOKE(route_event, RTEVENT_REDIRECT_UPDATE, rt0, rt); flags = rt->rt_flags; } + if (rt0) + RTFREE_LOCKED(rt0); + stat = &rtstat.rts_dynamic; } else { /* @@ -516,7 +519,7 @@ * add the key and gateway (in one malloc'd chunk). */ rt_setgate(rt, rt_key(rt), gateway); - EVENTHANDLER_INVOKE(route_event, RTEVENT_REDIRECT_UPDATE, rt); + EVENTHANDLER_INVOKE(route_event, RTEVENT_REDIRECT_UPDATE, rt, gateway); } } else error = EHOSTUNREACH; ==== //depot/projects/toestack/sys/net/route.h#6 (text+ko) ==== @@ -370,7 +370,7 @@ #define RTEVENT_ARP_UPDATE 1 #define RTEVENT_PMTU_UPDATE 2 #define RTEVENT_REDIRECT_UPDATE 3 -typedef void (*rtevent_fn)(void *, int, struct rtentry *); +typedef void (*rtevent_fn)(void *, int, struct rtentry *, struct rtentry *); EVENTHANDLER_DECLARE(route_event, rtevent_fn); ==== //depot/projects/toestack/sys/netinet/if_ether.c#8 (text+ko) ==== @@ -415,7 +415,7 @@ sdl->sdl_family == AF_LINK && sdl->sdl_alen != 0) { bcopy(LLADDR(sdl), desten, sdl->sdl_alen); - EVENTHANDLER_INVOKE(route_event, RTEVENT_ARP_UPDATE, rt); + EVENTHANDLER_INVOKE(route_event, RTEVENT_ARP_UPDATE, rt, NULL); /* * If entry has an expiry time and it is approaching, ==== //depot/projects/toestack/sys/netinet/ip_icmp.c#5 (text+ko) ==== @@ -154,7 +154,7 @@ #endif if (mtu >= 296 && rt->rt_rmx.rmx_mtu > mtu) { rt->rt_rmx.rmx_mtu = mtu; - EVENTHANDLER_INVOKE(route_event, RTEVENT_PMTU_UPDATE, rt); + EVENTHANDLER_INVOKE(route_event, RTEVENT_PMTU_UPDATE, rt, NULL); } } if (rt)