PERFORCE change 41603 for review
Sam Leffler
sam at FreeBSD.org
Thu Nov 6 16:35:26 PST 2003
http://perforce.freebsd.org/chv.cgi?CH=41603
Change 41603 by sam at 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
More information about the p4-projects
mailing list