Date: Fri, 7 Sep 2007 16:31:54 GMT From: Matus Harvan <mharvan@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 126156 for review Message-ID: <200709071631.l87GVstB038083@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=126156 Change 126156 by mharvan@mharvan_peleus on 2007/09/07 16:31:10 udp catchall patch cleanup * TLFLAG_SECURE * debugging printf * move statically declared catchallr outside of udp_input() Affected files ... .. //depot/projects/soc2007/mharvan-mtund/sys.patches/sys.current.udp_catchall.patch#2 edit Differences ... ==== //depot/projects/soc2007/mharvan-mtund/sys.patches/sys.current.udp_catchall.patch#2 (text+ko) ==== @@ -2,49 +2,52 @@ =================================================================== RCS file: /home/ncvs/src/sys/netinet/udp_usrreq.c,v retrieving revision 1.216 -diff -u -r1.216 udp_usrreq.c +diff -d -u -r1.216 udp_usrreq.c --- udp_usrreq.c 10 Jul 2007 09:30:46 -0000 1.216 -+++ udp_usrreq.c 24 Aug 2007 17:29:33 -0000 ++++ udp_usrreq.c 6 Sep 2007 21:59:31 -0000 @@ -125,6 +125,15 @@ SYSCTL_ULONG(_net_inet_udp, UDPCTL_RECVSPACE, recvspace, CTLFLAG_RW, &udp_recvspace, 0, "Maximum space for incoming UDP datagrams"); +static int udp_catchall = 0; -+SYSCTL_INT(_net_inet_raw, OID_AUTO, udp_catchall, CTLFLAG_RW, ++SYSCTL_INT(_net_inet_raw, OID_AUTO, udp_catchall, CTLFLAG_RW | CTLFLAG_SECURE, + &udp_catchall, 0, "Raw IP UDP sockets receive unclaimed UDP datagrams"); + +static int catchalllim = 5; -+SYSCTL_INT(_net_inet_udp, OID_AUTO, catchalllim, CTLFLAG_RW, ++SYSCTL_INT(_net_inet_udp, OID_AUTO, catchalllim, CTLFLAG_RW | CTLFLAG_SECURE, + &catchalllim, 0, + "Rate limit on received UDP datagrams due to udp_catchall"); + struct inpcbhead udb; /* from udp_var.h */ struct inpcbinfo udbinfo; -@@ -261,6 +270,10 @@ - #ifdef IPFIREWALL_FORWARD - struct m_tag *fwd_tag; - #endif -+ static struct rate { -+ struct timeval lasttime; -+ int curpps; -+ } catchallr; +@@ -136,6 +145,11 @@ + SYSCTL_STRUCT(_net_inet_udp, UDPCTL_STATS, stats, CTLFLAG_RW, &udpstat, + udpstat, "UDP statistics (struct udpstat, netinet/udp_var.h)"); - ifp = m->m_pkthdr.rcvif; - udpstat.udps_ipackets++; -@@ -515,6 +528,30 @@ ++static struct rate { ++ struct timeval lasttime; ++ int curpps; ++} catchallr; ++ + static void udp_detach(struct socket *so); + static int udp_output(struct inpcb *, struct mbuf *, struct sockaddr *, + struct mbuf *, struct thread *); +@@ -515,6 +529,35 @@ */ inp = in_pcblookup_hash(&udbinfo, ip->ip_src, uh->uh_sport, ip->ip_dst, uh->uh_dport, 1, ifp); + + /* catchall socket */ + if (inp == NULL && udp_catchall != 0) { ++#ifdef DIAGNOSTIC + printf("IP UDP catchall active\n"); -+ char dbuf[4*sizeof "123"], sbuf[4*sizeof "123"]; ++ char dbuf[INET_ADDRSTRLEN], sbuf[INET_ADDRSTRLEN]; + strcpy(dbuf, inet_ntoa(ip->ip_dst)); + strcpy(sbuf, inet_ntoa(ip->ip_src)); + printf("\tip_src: %s, sport: %hu\n\tip_dst: %s, dport: %hu\n", + sbuf, ntohs(uh->uh_sport), dbuf, ntohs(uh->uh_dport)); ++#endif + + /* rate limiting */ + if (catchalllim > 0) @@ -53,11 +56,14 @@ + rip_input(m, off); + INP_INFO_RUNLOCK(&udbinfo); + return; -+ } else -+ printf("ppsratecheck limited " ++ } ++#ifdef DIAGNOSTIC ++ else ++ printf("ppsratecheck limited " + "udp_catchall\n"); + else + printf("ppsratecheck limited udp_catchall\n"); ++#endif + } + if (inp == NULL) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200709071631.l87GVstB038083>