From owner-trustedbsd-discuss@FreeBSD.ORG Sat Jun 17 22:09:02 2006 Return-Path: X-Original-To: trustedbsd-discuss@freebsd.org Delivered-To: trustedbsd-discuss@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4F3ED16A47A for ; Sat, 17 Jun 2006 22:09:02 +0000 (UTC) (envelope-from max@love2party.net) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.188]) by mx1.FreeBSD.org (Postfix) with ESMTP id 633FB43D46 for ; Sat, 17 Jun 2006 22:09:01 +0000 (GMT) (envelope-from max@love2party.net) Received: from [88.64.185.155] (helo=amd64.laiers.local) by mrelayeu.kundenserver.de (node=mrelayeu0) with ESMTP (Nemesis), id 0MKwh2-1FriyM26cT-0000LF; Sun, 18 Jun 2006 00:08:55 +0200 From: Max Laier Organization: FreeBSD To: trustedbsd-discuss@freebsd.org Date: Sun, 18 Jun 2006 00:08:48 +0200 User-Agent: KMail/1.9.1 References: <20060327184133.5a35b20f.zhouyi04@ios.cn> <200606172359.13019.max@love2party.net> In-Reply-To: <200606172359.13019.max@love2party.net> X-Face: ,,8R(x[kmU]tKN@>gtH1yQE4aslGdu+2]; R]*pL,U>^H?)gW@49@wdJ`H<=?utf-8?q?=25=7D*=5FBD=0A=09U=5For=3D=5CmOZf764=26nYj=3DJYbR1PW0ud?=>|!~,,CPC.1-D$FG@0h3#'5"k{V]a~.<=?utf-8?q?mZ=7D44=23Se=7Em=0A=09Fe=7E=5C=5DX5B=5D=5Fxj?=(ykz9QKMw_l0C2AQ]}Ym8)fU MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1636735.IqntMIT3q6"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200606180008.53676.max@love2party.net> X-Provags-ID: kundenserver.de abuse@kundenserver.de login:61c499deaeeba3ba5be80f48ecc83056 Cc: zhouyi zhou Subject: Re: MAC Framework has confict with IP firewall X-BeenThere: trustedbsd-discuss@FreeBSD.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: TrustedBSD General Discussion List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jun 2006 22:09:02 -0000 --nextPart1636735.IqntMIT3q6 Content-Type: multipart/mixed; boundary="Boundary-01=_x1HlEKdGwm5/Vvh" Content-Transfer-Encoding: 7bit Content-Disposition: inline --Boundary-01=_x1HlEKdGwm5/Vvh Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Saturday 17 June 2006 23:59, Max Laier wrote: > On Monday 27 March 2006 12:41, zhouyi zhou wrote: > > MAC Framework has conflict with IP firewall > > because in function ipfw_tick of file ip_fw2.c, the mbuf is created > > without MAC label being initialized and send directly to ip_output. > > Christian Brueffer made me aware of this problem. Here is what we believe > should work as a temporary workaround to this problem. The final solution > would involve assigning a label with firewall states (derived from the > packet that creates the state) and then using this label for the mbuf > created for keepalives etc. > > The attached modifies biba, lomac and mls. Retry with different Content-Type. =2D-=20 /"\ Best regards, | mlaier@freebsd.org \ / Max Laier | ICQ #67774661 X http://pf4freebsd.love2party.net/ | mlaier@EFnet / \ ASCII Ribbon Campaign | Against HTML Mail and News --Boundary-01=_x1HlEKdGwm5/Vvh Content-Type: text/plain; charset="iso-8859-6"; name="mac_firewall.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="mac_firewall.diff" =2D-- //depot/projects/trustedbsd/mac/sys/contrib/pf/net/pf.c 2006/02/11 13= :33:00 +++ //depot/user/mlaier/trustedbsd/mac/sys/contrib/pf/net/pf.c 2006/06/17 1= 8:31:00 @@ -44,6 +44,7 @@ #ifdef __FreeBSD__ #include "opt_bpf.h" #include "opt_pf.h" +#include "opt_mac.h" =20 #ifdef DEV_BPF #define NBPFILTER DEV_BPF @@ -78,6 +79,7 @@ #include #include #ifdef __FreeBSD__ +#include #include #include #else @@ -192,7 +194,12 @@ struct pf_addr *, struct pf_addr *, u_int16_t, u_int16_t *, u_int16_t *, u_int16_t *, u_int16_t *, u_int8_t, sa_family_t); +#ifdef __FreeBSD__ +void pf_send_tcp(struct mbuf *, + const struct pf_rule *, sa_family_t, +#else void pf_send_tcp(const struct pf_rule *, sa_family_t, +#endif const struct pf_addr *, const struct pf_addr *, u_int16_t, u_int16_t, u_int32_t, u_int32_t, u_int8_t, u_int16_t, u_int16_t, u_int8_t, int, @@ -1114,7 +1121,11 @@ cur->local_flags |=3D PFSTATE_EXPIRING; #endif if (cur->src.state =3D=3D PF_TCPS_PROXY_DST) +#ifdef __FreeBSD__ + pf_send_tcp(NULL, cur->rule.ptr, cur->af, +#else pf_send_tcp(cur->rule.ptr, cur->af, +#endif &cur->ext.addr, &cur->lan.addr, cur->ext.port, cur->lan.port, cur->src.seqhi, cur->src.seqlo + 1, @@ -1574,7 +1585,11 @@ } =20 void +#ifdef __FreeBSD__ +pf_send_tcp(struct mbuf *replyto, const struct pf_rule *r, sa_family_t af, +#else pf_send_tcp(const struct pf_rule *r, sa_family_t af, +#endif const struct pf_addr *saddr, const struct pf_addr *daddr, u_int16_t sport, u_int16_t dport, u_int32_t seq, u_int32_t ack, u_int8_t flags, u_int16_t win, u_int16_t mss, u_int8_t ttl, int tag, @@ -1613,6 +1628,16 @@ m =3D m_gethdr(M_DONTWAIT, MT_HEADER); if (m =3D=3D NULL) return; +#ifdef __FreeBSD__ +#ifdef MAC + if (replyto) + mac_firewall_tcpreflect(replyto, m); + else + mac_firewall_tcpproxy(m); +#else + (void)replyto; +#endif +#endif if (tag) { #ifdef __FreeBSD__ m->m_flags |=3D M_SKIP_FIREWALL; @@ -3146,7 +3171,11 @@ ack++; if (th->th_flags & TH_FIN) ack++; +#ifdef __FreeBSD__ + pf_send_tcp(m, r, af, pd->dst, +#else pf_send_tcp(r, af, pd->dst, +#endif pd->src, th->th_dport, th->th_sport, ntohl(th->th_ack), ack, TH_RST|TH_ACK, 0, 0, r->return_ttl, 1, pd->eh, kif->pfik_ifp); @@ -3347,7 +3376,11 @@ mss =3D pf_calc_mss(saddr, af, mss); mss =3D pf_calc_mss(daddr, af, mss); s->src.mss =3D mss; +#ifdef __FreeBSD__ + pf_send_tcp(NULL, r, af, daddr, saddr, th->th_dport, +#else pf_send_tcp(r, af, daddr, saddr, th->th_dport, +#endif th->th_sport, s->src.seqhi, ntohl(th->th_seq) + 1, TH_SYN|TH_ACK, 0, s->src.mss, 0, 1, NULL, NULL); REASON_SET(&reason, PFRES_SYNPROXY); @@ -4348,7 +4381,11 @@ REASON_SET(reason, PFRES_SYNPROXY); return (PF_DROP); } +#ifdef __FreeBSD__ + pf_send_tcp(NULL, (*state)->rule.ptr, pd->af, pd->dst, +#else pf_send_tcp((*state)->rule.ptr, pd->af, pd->dst, +#endif pd->src, th->th_dport, th->th_sport, (*state)->src.seqhi, ntohl(th->th_seq) + 1, TH_SYN|TH_ACK, 0, (*state)->src.mss, 0, 1, @@ -4387,7 +4424,12 @@ (*state)->src.max_win =3D MAX(ntohs(th->th_win), 1); if ((*state)->dst.seqhi =3D=3D 1) (*state)->dst.seqhi =3D htonl(arc4random()); +#ifdef __FreeBSD__ + pf_send_tcp(NULL, (*state)->rule.ptr, pd->af, + &src->addr, +#else pf_send_tcp((*state)->rule.ptr, pd->af, &src->addr, +#endif &dst->addr, src->port, dst->port, (*state)->dst.seqhi, 0, TH_SYN, 0, (*state)->src.mss, 0, 0, NULL, NULL); @@ -4401,12 +4443,21 @@ } else { (*state)->dst.max_win =3D MAX(ntohs(th->th_win), 1); (*state)->dst.seqlo =3D ntohl(th->th_seq); +#ifdef __FreeBSD__ + pf_send_tcp(NULL, (*state)->rule.ptr, pd->af, pd->dst, +#else pf_send_tcp((*state)->rule.ptr, pd->af, pd->dst, +#endif pd->src, th->th_dport, th->th_sport, ntohl(th->th_ack), ntohl(th->th_seq) + 1, TH_ACK, (*state)->src.max_win, 0, 0, 0, NULL, NULL); +#ifdef __FreeBSD__ + pf_send_tcp(NULL, (*state)->rule.ptr, pd->af, + &src->addr, +#else pf_send_tcp((*state)->rule.ptr, pd->af, &src->addr, +#endif &dst->addr, src->port, dst->port, (*state)->src.seqhi + 1, (*state)->src.seqlo + 1, TH_ACK, (*state)->dst.max_win, 0, 0, 1, @@ -4685,7 +4736,11 @@ (*state)->src.state =3D=3D TCPS_SYN_SENT) { /* Send RST for state mismatches during handshake */ if (!(th->th_flags & TH_RST)) +#ifdef __FreeBSD__ + pf_send_tcp(m, (*state)->rule.ptr, pd->af, +#else pf_send_tcp((*state)->rule.ptr, pd->af, +#endif pd->dst, pd->src, th->th_dport, th->th_sport, ntohl(th->th_ack), 0, TH_RST, 0, 0, =2D-- //depot/projects/trustedbsd/mac/sys/modules/ipfw/Makefile 2006/03/20 = 19:47:17 +++ //depot/user/mlaier/trustedbsd/mac/sys/modules/ipfw/Makefile 2006/06/17= 21:22:14 @@ -6,7 +6,7 @@ =20 KMOD=3D ipfw SRCS=3D ip_fw2.c ip_fw_pfil.c =2DSRCS+=3D opt_inet6.h opt_ipsec.h +SRCS+=3D opt_inet6.h opt_ipsec.h opt_mac.h =20 CFLAGS+=3D -DIPFIREWALL # =2D-- //depot/projects/trustedbsd/mac/sys/modules/pf/Makefile 2006/03/20 19= :47:17 +++ //depot/user/mlaier/trustedbsd/mac/sys/modules/pf/Makefile 2006/06/17 2= 1:22:14 @@ -8,7 +8,7 @@ KMOD=3D pf SRCS =3D pf.c pf_if.c pf_subr.c pf_osfp.c pf_ioctl.c pf_norm.c pf_table.c= \ in4_cksum.c \ =2D opt_pf.h opt_inet.h opt_inet6.h opt_bpf.h + opt_pf.h opt_inet.h opt_inet6.h opt_bpf.h opt_mac.h =20 CFLAGS+=3D -I${.CURDIR}/../../contrib/pf =20 =2D-- //depot/projects/trustedbsd/mac/sys/netinet/ip_fw2.c 2006/03/08 21:28= :14 +++ //depot/user/mlaier/trustedbsd/mac/sys/netinet/ip_fw2.c 2006/06/17 21:2= 2:14 @@ -43,6 +43,7 @@ #endif #include "opt_inet6.h" #include "opt_ipsec.h" +#include "opt_mac.h" =20 #include #include @@ -52,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -1524,9 +1526,12 @@ * When flags & TH_RST, we are sending a RST packet, because of a * "reset" action matched the packet. * Otherwise we are sending a keepalive, and flags & TH_ + * The 'replyto' mbuf is the mbuf being replied to, if any, and is required + * so that MAC can label the reply appropriately. */ static struct mbuf * =2Dsend_pkt(struct ipfw_flow_id *id, u_int32_t seq, u_int32_t ack, int flag= s) +send_pkt(struct mbuf *replyto, struct ipfw_flow_id *id, u_int32_t seq, + u_int32_t ack, int flags) { struct mbuf *m; struct ip *ip; @@ -1536,6 +1541,16 @@ if (m =3D=3D 0) return (NULL); m->m_pkthdr.rcvif =3D (struct ifnet *)0; + +#ifdef MAC + if (replyto !=3D NULL) + mac_firewall_tcpreflect(replyto, m); + else + mac_firewall_tcpkeepalive(m); +#else + (void)replyto; /* don't warn about unused arg */ +#endif + m->m_pkthdr.len =3D m->m_len =3D sizeof(struct ip) + sizeof(struct tcphdr= ); m->m_data +=3D max_linkhdr; =20 @@ -1620,8 +1635,8 @@ L3HDR(struct tcphdr, mtod(args->m, struct ip *)); if ( (tcp->th_flags & TH_RST) =3D=3D 0) { struct mbuf *m; =2D m =3D send_pkt(&(args->f_id), ntohl(tcp->th_seq), =2D ntohl(tcp->th_ack), + m =3D send_pkt(args->m, &(args->f_id), + ntohl(tcp->th_seq), ntohl(tcp->th_ack), tcp->th_flags | TH_RST); if (m !=3D NULL) ip_output(m, NULL, NULL, 0, NULL, NULL); @@ -4082,11 +4097,11 @@ if (TIME_LEQ(q->expire, time_uptime)) continue; /* too late, rule expired */ =20 =2D *mtailp =3D send_pkt(&(q->id), q->ack_rev - 1, + *mtailp =3D send_pkt(NULL, &(q->id), q->ack_rev - 1, q->ack_fwd, TH_SYN); if (*mtailp !=3D NULL) mtailp =3D &(*mtailp)->m_nextpkt; =2D *mtailp =3D send_pkt(&(q->id), q->ack_fwd - 1, + *mtailp =3D send_pkt(NULL, &(q->id), q->ack_fwd - 1, q->ack_rev, 0); if (*mtailp !=3D NULL) mtailp =3D &(*mtailp)->m_nextpkt; =2D-- //depot/projects/trustedbsd/mac/sys/security/mac/mac_inet.c 2004/11/0= 8 17:24:02 +++ //depot/user/mlaier/trustedbsd/mac/sys/security/mac/mac_inet.c 2006/06/= 17 19:55:19 @@ -309,3 +309,41 @@ INP_LOCK_ASSERT(inp); MAC_PERFORM(inpcb_sosetlabel, so, so->so_label, inp, inp->inp_label); } + +void +mac_firewall_tcpreflect(struct mbuf *from, struct mbuf *to) +{ + struct label *fromlabel, *tolabel; + + M_ASSERTPKTHDR(from); + M_ASSERTPKTHDR(to); + + fromlabel =3D mac_mbuf_to_label(from); + tolabel =3D mac_mbuf_to_label(to); + + MAC_PERFORM(firewall_tcpreflect, from, fromlabel, to, tolabel); +} + +void +mac_firewall_tcpkeepalive(struct mbuf *m) +{ + struct label *label; + + M_ASSERTPKTHDR(m); + + label =3D mac_mbuf_to_label(m); + + MAC_PERFORM(firewall_tcpkeepalive, m, label); +} + +void +mac_firewall_tcpproxy(struct mbuf *m) +{ + struct label *label; + + M_ASSERTPKTHDR(m); + + label =3D mac_mbuf_to_label(m); + + MAC_PERFORM(firewall_tcpproxy, m, label); +} =2D-- //depot/projects/trustedbsd/mac/sys/security/mac_biba/mac_biba.c 2006= /02/11 13:33:00 +++ //depot/user/mlaier/trustedbsd/mac/sys/security/mac_biba/mac_biba.c 200= 6/06/17 21:07:55 @@ -1450,6 +1450,40 @@ mac_biba_copy(source, dest); } =20 +static void +mac_biba_firewall_tcpreflect(struct mbuf *from, struct label *fromlabel, + struct mbuf *to, struct label *tolabel) +{ + struct mac_biba *source, *dest; + + source =3D SLOT(fromlabel); + dest =3D SLOT(tolabel); + + mac_biba_copy_effective(source, dest); +} + +static void +mac_biba_firewall_tcpkeepalive(struct mbuf *m, struct label *label) +{ + struct mac_biba *dest; + + dest =3D SLOT(label); + + /* XXX: where is the label for the firewall really comming from? */ + mac_biba_set_effective(dest, MAC_BIBA_TYPE_EQUAL, 0, NULL); +} + +static void +mac_biba_firewall_tcpproxy(struct mbuf *m, struct label *label) +{ + struct mac_biba *dest; + + dest =3D SLOT(label); + + /* XXX: where is the label for the firewall really comming from? */ + mac_biba_set_effective(dest, MAC_BIBA_TYPE_EQUAL, 0, NULL); +} + /* * Labeling event operations: processes. */ @@ -3195,6 +3229,9 @@ .mpo_relabel_ifnet =3D mac_biba_relabel_ifnet, .mpo_update_ipq =3D mac_biba_update_ipq, .mpo_inpcb_sosetlabel =3D mac_biba_inpcb_sosetlabel, + .mpo_firewall_tcpreflect =3D mac_biba_firewall_tcpreflect, + .mpo_firewall_tcpkeepalive =3D mac_biba_firewall_tcpkeepalive, + .mpo_firewall_tcpproxy =3D mac_biba_firewall_tcpproxy, .mpo_create_proc0 =3D mac_biba_create_proc0, .mpo_create_proc1 =3D mac_biba_create_proc1, .mpo_relabel_cred =3D mac_biba_relabel_cred, =2D-- //depot/projects/trustedbsd/mac/sys/security/mac_lomac/mac_lomac.c 20= 06/03/08 21:51:14 +++ //depot/user/mlaier/trustedbsd/mac/sys/security/mac_lomac/mac_lomac.c 2= 006/06/17 20:17:40 @@ -1529,6 +1529,40 @@ mac_lomac_copy_single(source, dest); } =20 +static void +mac_lomac_firewall_tcpreflect(struct mbuf *from, struct label *fromlabel, + struct mbuf *to, struct label *tolabel) +{ + struct mac_lomac *source, *dest; + + source =3D SLOT(fromlabel); + dest =3D SLOT(tolabel); + + mac_lomac_copy_single(source, dest); +} + +static void +mac_lomac_firewall_tcpkeepalive(struct mbuf *m, struct label *label) +{ + struct mac_lomac *dest; + + dest =3D SLOT(label); + + /* XXX: where is the label for the firewall really comming from? */ + mac_lomac_set_single(dest, MAC_LOMAC_TYPE_EQUAL, 0); +} + +static void +mac_lomac_firewall_tcpproxy(struct mbuf *m, struct label *label) +{ + struct mac_lomac *dest; + + dest =3D SLOT(label); + + /* XXX: where is the label for the firewall really comming from? */ + mac_lomac_set_single(dest, MAC_LOMAC_TYPE_EQUAL, 0); +} + /* * Labeling event operations: processes. */ @@ -3108,6 +3142,9 @@ .mpo_relabel_ifnet =3D mac_lomac_relabel_ifnet, .mpo_update_ipq =3D mac_lomac_update_ipq, .mpo_inpcb_sosetlabel =3D mac_lomac_inpcb_sosetlabel, + .mpo_firewall_tcpreflect =3D mac_lomac_firewall_tcpreflect, + .mpo_firewall_tcpkeepalive =3D mac_lomac_firewall_tcpkeepalive, + .mpo_firewall_tcpproxy =3D mac_lomac_firewall_tcpproxy, .mpo_execve_transition =3D mac_lomac_execve_transition, .mpo_execve_will_transition =3D mac_lomac_execve_will_transition, .mpo_create_proc0 =3D mac_lomac_create_proc0, =2D-- //depot/projects/trustedbsd/mac/sys/security/mac_mls/mac_mls.c 2005/1= 1/09 15:09:41 +++ //depot/user/mlaier/trustedbsd/mac/sys/security/mac_mls/mac_mls.c 2006/= 06/17 21:07:55 @@ -1382,6 +1382,40 @@ mac_mls_copy(source, dest); } =20 +static void +mac_mls_firewall_tcpreflect(struct mbuf *from, struct label *fromlabel, + struct mbuf *to, struct label *tolabel) +{ + struct mac_mls *source, *dest; + + source =3D SLOT(fromlabel); + dest =3D SLOT(tolabel); + + mac_mls_copy_effective(source, dest); +} + +static void +mac_mls_firewall_tcpkeepalive(struct mbuf *m, struct label *mbuflabel) +{ + struct mac_mls *dest; + + dest =3D SLOT(mbuflabel); + + /* XXX: where is the label for the firewall really comming from? */ + mac_mls_set_effective(dest, MAC_MLS_TYPE_EQUAL, 0, NULL); +} + +static void +mac_mls_firewall_tcpproxy(struct mbuf *m, struct label *mbuflabel) +{ + struct mac_mls *dest; + + dest =3D SLOT(mbuflabel); + + /* XXX: where is the label for the firewall really comming from? */ + mac_mls_set_effective(dest, MAC_MLS_TYPE_EQUAL, 0, NULL); +} + /* * Labeling event operations: processes. */ @@ -2961,6 +2995,9 @@ .mpo_relabel_ifnet =3D mac_mls_relabel_ifnet, .mpo_update_ipq =3D mac_mls_update_ipq, .mpo_inpcb_sosetlabel =3D mac_mls_inpcb_sosetlabel, + .mpo_firewall_tcpreflect =3D mac_mls_firewall_tcpreflect, + .mpo_firewall_tcpkeepalive =3D mac_mls_firewall_tcpkeepalive, + .mpo_firewall_tcpproxy =3D mac_mls_firewall_tcpproxy, .mpo_create_proc0 =3D mac_mls_create_proc0, .mpo_create_proc1 =3D mac_mls_create_proc1, .mpo_relabel_cred =3D mac_mls_relabel_cred, =2D-- //depot/projects/trustedbsd/mac/sys/sys/mac.h 2006/04/27 16:07:17 +++ //depot/user/mlaier/trustedbsd/mac/sys/sys/mac.h 2006/06/17 19:46:34 @@ -283,6 +283,13 @@ void mac_update_ipq(struct mbuf *fragment, struct ipq *ipq); int mac_update_mbuf_from_cipso(struct mbuf *m, char *cp, int *code); void mac_inpcb_sosetlabel(struct socket *so, struct inpcb *inp); +void mac_firewall_tcpreflect(struct mbuf *from, struct mbuf *to); +/* + * XXX: The next two should be combined to mac_mbuf_from_firewall_state if + * we'd stick labels to firewall states. Later! + */ +void mac_firewall_tcpkeepalive(struct mbuf *m); +void mac_firewall_tcpproxy(struct mbuf *m); =20 /* * Labeling event operations: processes. =2D-- //depot/projects/trustedbsd/mac/sys/sys/mac_policy.h 2006/04/28 14:30= :05 +++ //depot/user/mlaier/trustedbsd/mac/sys/sys/mac_policy.h 2006/06/17 19:2= 3:51 @@ -328,6 +328,13 @@ typedef void (*mpo_inpcb_sosetlabel_t)(struct socket *so, struct label *label, struct inpcb *inp, struct label *inplabel); +typedef void (*mpo_firewall_tcpreflect_t)(struct mbuf *from, + struct label *fromlabel, struct mbuf *to, + struct label *tolabel); +typedef void (*mpo_firewall_tcpkeepalive_t)(struct mbuf *m, + struct label *label); +typedef void (*mpo_firewall_tcpproxy_t)(struct mbuf *m, + struct label *label); =20 /* * Labeling event operations: processes. @@ -748,6 +755,9 @@ mpo_update_ipq_t mpo_update_ipq; mpo_update_mbuf_from_cipso_t mpo_update_mbuf_from_cipso; mpo_inpcb_sosetlabel_t mpo_inpcb_sosetlabel; + mpo_firewall_tcpreflect_t mpo_firewall_tcpreflect; + mpo_firewall_tcpkeepalive_t mpo_firewall_tcpkeepalive; + mpo_firewall_tcpproxy_t mpo_firewall_tcpproxy; =20 /* * Labeling event operations: processes. --Boundary-01=_x1HlEKdGwm5/Vvh-- --nextPart1636735.IqntMIT3q6 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (FreeBSD) iD8DBQBElH11XyyEoT62BG0RAkGYAJ0XepGJx5mC6smTRfyBClaqKoLRpwCeIe3z /KK9up/BcR29C0nY6CmYZIc= =/n7c -----END PGP SIGNATURE----- --nextPart1636735.IqntMIT3q6--