[pf4freebsd] Re: problem with 'user'
Pyun YongHyeon
yongari at kt-is.co.kr
Wed Sep 15 21:00:10 PDT 2004
On Sat, Jan 31, 2004 at 02:43:09PM +0900, To pf4freebsd at freelists.org wro=
te:
> Thank you for your report.
> Can you try this patch? (Copy attached file to
> /usr/ports/security/pf/files directory and build.)
> Working/failure reports are very appreciated.
>=20
Sorry, file was inlined. Here is attached file.
Regards,
Pyun YongHyeon
--=20
Pyun YongHyeon <http://www.kr.freebsd.org/~yongari>
-- Attached file included as plaintext by Ecartis --
--- pf/pf.c.orig Tue Jan 6 15:05:35 2004
+++ pf/pf.c Sat Jan 31 14:33:47 2004
@@ -2153,11 +2153,11 @@
struct pf_addr *saddr, *daddr;
u_int16_t sport, dport;
#if defined(__FreeBSD__)
- struct inpcb *inp;
+ struct inpcbinfo *pi;
#else
struct inpcbtable *tb;
- struct inpcb *inp;
#endif
+ struct inpcb *inp;
=20
*uid =3D UID_MAX;
*gid =3D GID_MAX;
@@ -2165,14 +2165,18 @@
case IPPROTO_TCP:
sport =3D pd->hdr.tcp->th_sport;
dport =3D pd->hdr.tcp->th_dport;
-#if !defined(__FreeBSD__)
+#if defined(__FreeBSD__)
+ pi =3D &tcbinfo;
+#else
tb =3D &tcbtable;
#endif
break;
case IPPROTO_UDP:
sport =3D pd->hdr.udp->uh_sport;
dport =3D pd->hdr.udp->uh_dport;
-#if !defined(__FreeBSD__)
+#if defined(__FreeBSD__)
+ pi =3D &udbinfo;
+#else
tb =3D &udbtable;
#endif
break;
@@ -2195,16 +2199,16 @@
case AF_INET:
#if defined(__FreeBSD__)
#if (__FreeBSD_version >=3D 500043)
- INP_INFO_RLOCK(&tcbinfo);
+ INP_INFO_RLOCK(pi); /* XXX LOR */
#endif
- inp =3D in_pcblookup_hash(&tcbinfo, saddr->v4, sport, daddr->v4,
+ inp =3D in_pcblookup_hash(pi, saddr->v4, sport, daddr->v4,
dport, 0, NULL);
if (inp =3D=3D NULL) {
- inp =3D in_pcblookup_hash(&tcbinfo, saddr->v4, sport,
+ inp =3D in_pcblookup_hash(pi, saddr->v4, sport,
daddr->v4, dport, INPLOOKUP_WILDCARD, NULL);
if(inp =3D=3D NULL) {
#if (__FreeBSD_version >=3D 500043)
- INP_INFO_RUNLOCK(&tcbinfo);
+ INP_INFO_RUNLOCK(pi);
#endif
return (0);
}
@@ -2223,16 +2227,16 @@
case AF_INET6:
#if defined(__FreeBSD__)
#if (__FreeBSD_version >=3D 500043)
- INP_INFO_RLOCK(&tcbinfo);
+ INP_INFO_RLOCK(pi);
#endif
- inp =3D in6_pcblookup_hash(&tcbinfo, &saddr->v6, sport,
+ inp =3D in6_pcblookup_hash(pi, &saddr->v6, sport,
&daddr->v6, dport, 0, NULL);
if (inp =3D=3D NULL) {
- inp =3D in6_pcblookup_hash(&tcbinfo, &saddr->v6, sport,
+ inp =3D in6_pcblookup_hash(pi, &saddr->v6, sport,
&daddr->v6, dport, INPLOOKUP_WILDCARD, NULL);
if (inp =3D=3D NULL) {
#if (__FreeBSD_version >=3D 500043)
- INP_INFO_RUNLOCK(&tcbinfo);
+ INP_INFO_RUNLOCK(pi);
#endif
return (0);
}
@@ -2261,7 +2265,7 @@
*gid =3D inp->inp_socket->so_cred->cr_groups[0];
#if (__FreeBSD_version >=3D 500043)
INP_UNLOCK(inp);
- INP_INFO_RUNLOCK(&tcbinfo);
+ INP_INFO_RUNLOCK(pi);
#endif
#else
*uid =3D inp->inp_socket->so_euid;
More information about the freebsd-pf
mailing list