Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Nov 2003 16:35:24 -0800 (PST)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 41603 for review
Message-ID:  <200311070035.hA70ZOLX076922@repoman.freebsd.org>

index | next in thread | raw e-mail

http://perforce.freebsd.org/chv.cgi?CH=41603

Change 41603 by sam@sam_ebb on 2003/11/06 16:35:10

	Add ICMP redirect handling to divert sockets.  It's not clear
	this is needed but it was simple so I did it.

Affected files ...

.. //depot/projects/netperf/sys/netinet/in_proto.c#5 edit
.. //depot/projects/netperf/sys/netinet/ip_divert.c#13 edit
.. //depot/projects/netperf/sys/netinet/ip_var.h#10 edit

Differences ...

==== //depot/projects/netperf/sys/netinet/in_proto.c#5 (text+ko) ====

@@ -206,7 +206,7 @@
 #endif
 #ifdef IPDIVERT
 { SOCK_RAW,	&inetdomain,	IPPROTO_DIVERT,	PR_ATOMIC|PR_ADDR,
-  div_input,	0,	 	0,		ip_ctloutput,
+  div_input,	0,	 	div_ctlinput,	ip_ctloutput,
   0,
   div_init,	0,		0,		0,
   &div_usrreqs,

==== //depot/projects/netperf/sys/netinet/ip_divert.c#13 (text+ko) ====

@@ -518,6 +518,21 @@
 	return div_output(so, m, (struct sockaddr_in *)nam, control);
 }
 
+void
+div_ctlinput(int cmd, struct sockaddr *sa, void *vip)
+{
+        struct in_addr faddr;
+
+	faddr = ((struct sockaddr_in *)sa)->sin_addr;
+	if (sa->sa_family != AF_INET || faddr.s_addr == INADDR_ANY)
+        	return;
+	if (PRC_IS_REDIRECT(cmd)) {
+		/* flush held routes */
+		in_pcbnotifyall(&divcbinfo, faddr,
+			inetctlerrmap[cmd], in_rtchange);
+	}
+}
+
 static int
 div_pcblist(SYSCTL_HANDLER_ARGS)
 {

==== //depot/projects/netperf/sys/netinet/ip_var.h#10 (text+ko) ====

@@ -203,6 +203,7 @@
 #ifdef IPDIVERT
 void	div_init(void);
 void	div_input(struct mbuf *, int);
+void	div_ctlinput(int, struct sockaddr *, void *);
 void	divert_packet(struct mbuf *m, int incoming, int port, int rule);
 extern struct pr_usrreqs div_usrreqs;
 #endif


help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311070035.hA70ZOLX076922>