From owner-svn-src-projects@FreeBSD.ORG Fri May 25 15:49:22 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DDD4A1065672; Fri, 25 May 2012 15:49:21 +0000 (UTC) (envelope-from ermal.luci@gmail.com) Received: from mail-yw0-f54.google.com (mail-yw0-f54.google.com [209.85.213.54]) by mx1.freebsd.org (Postfix) with ESMTP id 6FDBA8FC08; Fri, 25 May 2012 15:49:21 +0000 (UTC) Received: by yhgm50 with SMTP id m50so842587yhg.13 for ; Fri, 25 May 2012 08:49:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=QmmKIoG/8ipUoE08Kawa7feYe/hMU+zrkWgolPuP3to=; b=XFh9lVe7tVCKqFwCbn5Wj8kBqXkd+Nl1AJTJOzVVts+rwCDF55iJNWAOGgjR4ypFF/ FEnEyjtu+JUd3Qi3HyAxA+j+KNaXalvtF0EjPNzDZzYdhfuTWYH4L6hjEpm3VaLBDBRt YYYDwe/RmJeZa/tONVrJlmyl7eGUiB5WvTW521USNIELhruEtQDVlRriSq+dbQeLwskq i8ngUaVmwcuENQE7+xLUTXsaSpRklKfbvUqqjqsM7JKQ7qajADjgSUpJD46ICpi8zPM8 P5kAHaw2eMT5PAoJw8aZYLMhikgCJ9/NeNfLVo3or6U38qi/6X6j8bvBRznDO4uqHjzE 9SoA== MIME-Version: 1.0 Received: by 10.50.195.234 with SMTP id ih10mr3546216igc.0.1337960960137; Fri, 25 May 2012 08:49:20 -0700 (PDT) Sender: ermal.luci@gmail.com Received: by 10.231.35.202 with HTTP; Fri, 25 May 2012 08:49:20 -0700 (PDT) In-Reply-To: <201205251449.q4PEnpYd016118@svn.freebsd.org> References: <201205251449.q4PEnpYd016118@svn.freebsd.org> Date: Fri, 25 May 2012 17:49:20 +0200 X-Google-Sender-Auth: WHoLP9wPZ9y1cnLN6aAzqdUtsqQ Message-ID: From: =?ISO-8859-1?Q?Ermal_Lu=E7i?= To: Gleb Smirnoff Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r235993 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 May 2012 15:49:22 -0000 I am not sure you understand the implications here and previous commit. But word CONSISTENCY and wrong behviour is the first to look after. On Fri, May 25, 2012 at 4:49 PM, Gleb Smirnoff wrote: > Author: glebius > Date: Fri May 25 14:49:51 2012 > New Revision: 235993 > URL: http://svn.freebsd.org/changeset/base/235993 > > Log: > =A0- Stop referencing tag names by states. Not a big deal if tag name > =A0 =A0disappears. > =A0- Make tag code more private to pf_ioctl.c > > Modified: > =A0projects/pf/head/sys/contrib/pf/net/pf.c > =A0projects/pf/head/sys/contrib/pf/net/pf_ioctl.c > =A0projects/pf/head/sys/contrib/pf/net/pfvar.h > > Modified: projects/pf/head/sys/contrib/pf/net/pf.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- projects/pf/head/sys/contrib/pf/net/pf.c =A0 =A0Fri May 25 14:40:56 2= 012 =A0 =A0 =A0 =A0(r235992) > +++ projects/pf/head/sys/contrib/pf/net/pf.c =A0 =A0Fri May 25 14:49:51 2= 012 =A0 =A0 =A0 =A0(r235993) > @@ -1472,8 +1472,6 @@ pf_free_state(struct pf_state *cur) > =A0 =A0 =A0 =A0if (cur->anchor.ptr !=3D NULL) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0--cur->anchor.ptr->states_cur; > =A0 =A0 =A0 =A0pf_normalize_tcp_cleanup(cur); > - =A0 =A0 =A0 if (cur->tag) > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 pf_tag_unref(cur->tag); > =A0 =A0 =A0 =A0uma_zfree(V_pf_state_z, cur); > =A0 =A0 =A0 =A0V_pf_status.fcounters[FCNT_STATE_REMOVALS]++; > =A0 =A0 =A0 =A0V_pf_status.states--; > @@ -3446,10 +3444,8 @@ pf_create_state(struct pf_rule *r, struc > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0*sm =3D s; > > =A0 =A0 =A0 =A0pf_set_rt_ifp(s, pd->src); =A0 =A0 =A0/* needs s->state_ke= y set */ > - =A0 =A0 =A0 if (tag > 0) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 pf_tag_ref(tag); > + =A0 =A0 =A0 if (tag > 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0s->tag =3D tag; > - =A0 =A0 =A0 } > =A0 =A0 =A0 =A0if (pd->proto =3D=3D IPPROTO_TCP && (th->th_flags & (TH_SY= N|TH_ACK)) =3D=3D > =A0 =A0 =A0 =A0 =A0 =A0TH_SYN && r->keep_state =3D=3D PF_STATE_SYNPROXY) = { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0s->src.state =3D PF_TCPS_PROXY_SRC; > > Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c =A0 =A0 =A0Fri May 25 = 14:40:56 2012 =A0 =A0 =A0 =A0(r235992) > +++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c =A0 =A0 =A0Fri May 25 = 14:49:51 2012 =A0 =A0 =A0 =A0(r235993) > @@ -135,8 +135,6 @@ static int =A0 =A0 =A0 =A0 =A0 pf_addr_setup(struct p= f_rul > =A0static void =A0 =A0 =A0 =A0 =A0 =A0 pf_addr_copyout(struct pf_addr_wra= p *); > =A0static void =A0 =A0 =A0 =A0 =A0 =A0 pf_pkt_addr_changed(struct mbuf *)= ; > > -#define =A0 =A0 =A0 =A0TAGID_MAX =A0 =A0 =A0 =A050000 > - > =A0VNET_DEFINE(struct pf_rule, =A0 =A0pf_default_rule); > =A0VNET_DEFINE(struct sx, =A0 =A0 =A0 =A0 pf_consistency_lock); > =A0#define V_pf_consistency_lock =A0VNET(pf_consistency_lock) > @@ -146,13 +144,20 @@ static VNET_DEFINE(int, =A0 =A0 =A0 =A0 =A0 pf_altq= _running > =A0#define =A0 =A0 =A0 =A0V_pf_altq_running =A0 =A0 =A0 VNET(pf_altq_runn= ing) > =A0#endif > > -TAILQ_HEAD(pf_tags, pf_tagname); > +#define =A0 =A0 =A0 =A0TAGID_MAX =A0 =A0 =A0 =A050000 > +struct pf_tagname { > + =A0 =A0 =A0 TAILQ_ENTRY(pf_tagname) entries; > + =A0 =A0 =A0 char =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0name[PF_TAG_NAM= E_SIZE]; > + =A0 =A0 =A0 uint16_t =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0tag; > + =A0 =A0 =A0 int =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ref; > +}; > > +TAILQ_HEAD(pf_tags, pf_tagname); > =A0#define =A0 =A0 =A0 =A0V_pf_tags =A0 =A0 =A0 =A0 =A0 =A0 =A0 VNET(pf_t= ags) > =A0VNET_DEFINE(struct pf_tags, pf_tags); > =A0#define =A0 =A0 =A0 =A0V_pf_qids =A0 =A0 =A0 =A0 =A0 =A0 =A0 VNET(pf_q= ids) > =A0VNET_DEFINE(struct pf_tags, pf_qids); > - > +MALLOC_DEFINE(M_PFTAG, "pf tags", "pf tags"); > > =A0#if (PF_QNAME_SIZE !=3D PF_TAG_NAME_SIZE) > =A0#error PF_QNAME_SIZE must be equal to PF_TAG_NAME_SIZE > @@ -160,7 +165,7 @@ VNET_DEFINE(struct pf_tags, pf_qids); > > =A0static u_int16_t =A0 =A0 =A0 =A0tagname2tag(struct pf_tags *, char *); > =A0static u_int16_t =A0 =A0 =A0 =A0pf_tagname2tag(char *); > -void =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0tag_unref(struct pf_tags *, = u_int16_t); > +static void =A0 =A0 =A0 =A0 =A0 =A0 tag_unref(struct pf_tags *, u_int16_= t); > > =A0#define DPFPRINTF(n, x) if (V_pf_status.debug >=3D (n)) printf x > > @@ -406,8 +411,10 @@ pf_free_rule(struct pf_rule *rule) > > =A0 =A0 =A0 =A0PF_RULES_WASSERT(); > > - =A0 =A0 =A0 pf_tag_unref(rule->tag); > - =A0 =A0 =A0 pf_tag_unref(rule->match_tag); > + =A0 =A0 =A0 if (rule->tag) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 tag_unref(&V_pf_tags, rule->tag); > + =A0 =A0 =A0 if (rule->match_tag) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 tag_unref(&V_pf_tags, rule->match_tag); > =A0#ifdef ALTQ > =A0 =A0 =A0 =A0if (rule->pqid !=3D rule->qid) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pf_qid_unref(rule->pqid); > @@ -444,6 +451,8 @@ tagname2tag(struct pf_tags *head, char * > =A0 =A0 =A0 =A0struct pf_tagname =A0 =A0 =A0 *tag, *p =3D NULL; > =A0 =A0 =A0 =A0u_int16_t =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0new_tagid =3D 1; > > + =A0 =A0 =A0 PF_RULES_WASSERT(); > + > =A0 =A0 =A0 =A0TAILQ_FOREACH(tag, head, entries) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (strcmp(tagname, tag->name) =3D=3D 0) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0tag->ref++; > @@ -466,7 +475,7 @@ tagname2tag(struct pf_tags *head, char * > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return (0); > > =A0 =A0 =A0 =A0/* allocate and fill new struct pf_tagname */ > - =A0 =A0 =A0 tag =3D malloc(sizeof(*tag), M_TEMP, M_NOWAIT|M_ZERO); > + =A0 =A0 =A0 tag =3D malloc(sizeof(*tag), M_PFTAG, M_NOWAIT|M_ZERO); > =A0 =A0 =A0 =A0if (tag =3D=3D NULL) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return (0); > =A0 =A0 =A0 =A0strlcpy(tag->name, tagname, sizeof(tag->name)); > @@ -481,20 +490,19 @@ tagname2tag(struct pf_tags *head, char * > =A0 =A0 =A0 =A0return (tag->tag); > =A0} > > -void > +static void > =A0tag_unref(struct pf_tags *head, u_int16_t tag) > =A0{ > =A0 =A0 =A0 =A0struct pf_tagname =A0 =A0 =A0 *p, *next; > > - =A0 =A0 =A0 if (tag =3D=3D 0) > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 return; > + =A0 =A0 =A0 PF_RULES_WASSERT(); > > =A0 =A0 =A0 =A0for (p =3D TAILQ_FIRST(head); p !=3D NULL; p =3D next) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0next =3D TAILQ_NEXT(p, entries); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (tag =3D=3D p->tag) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (--p->ref =3D=3D 0) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0TAILQ_REMO= VE(head, p, entries); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 free(p, M_T= EMP); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 free(p, M_P= FTAG); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > @@ -507,24 +515,6 @@ pf_tagname2tag(char *tagname) > =A0 =A0 =A0 =A0return (tagname2tag(&V_pf_tags, tagname)); > =A0} > > -void > -pf_tag_ref(u_int16_t tag) > -{ > - =A0 =A0 =A0 struct pf_tagname *t; > - > - =A0 =A0 =A0 TAILQ_FOREACH(t, &V_pf_tags, entries) > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (t->tag =3D=3D tag) > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 break; > - =A0 =A0 =A0 if (t !=3D NULL) > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 t->ref++; > -} > - > -void > -pf_tag_unref(u_int16_t tag) > -{ > - =A0 =A0 =A0 tag_unref(&V_pf_tags, tag); > -} > - > =A0#ifdef ALTQ > =A0static u_int32_t > =A0pf_qname2qid(char *qname) > > Modified: projects/pf/head/sys/contrib/pf/net/pfvar.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- projects/pf/head/sys/contrib/pf/net/pfvar.h Fri May 25 14:40:56 2012 = =A0 =A0 =A0 =A0(r235992) > +++ projects/pf/head/sys/contrib/pf/net/pfvar.h Fri May 25 14:49:51 2012 = =A0 =A0 =A0 =A0(r235993) > @@ -1410,13 +1410,6 @@ struct pf_altq { > =A0 =A0 =A0 =A0u_int32_t =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0qid; =A0 =A0 =A0 = =A0 =A0 /* return value */ > =A0}; > > -struct pf_tagname { > - =A0 =A0 =A0 TAILQ_ENTRY(pf_tagname) entries; > - =A0 =A0 =A0 char =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0name[PF_TAG_NAM= E_SIZE]; > - =A0 =A0 =A0 u_int16_t =A0 =A0 =A0 =A0 =A0 =A0 =A0 tag; > - =A0 =A0 =A0 int =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ref; > -}; > - > =A0struct pf_divert { > =A0 =A0 =A0 =A0union { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0struct in_addr =A0ipv4; > @@ -1931,8 +1924,6 @@ int =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pfi_clear_flags(= const char *, int) > > =A0int =A0 =A0 =A0 =A0 =A0 =A0 pf_match_tag(struct mbuf *, struct pf_rule= *, int *, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0struct pf_mtag *); > -void =A0 =A0 =A0 =A0 =A0 =A0pf_tag_ref(u_int16_t); > -void =A0 =A0 =A0 =A0 =A0 =A0pf_tag_unref(u_int16_t); > =A0int =A0 =A0 =A0 =A0 =A0 =A0 pf_tag_packet(struct mbuf *, int, int, str= uct pf_mtag *); > =A0void =A0 =A0 =A0 =A0 =A0 =A0pf_qid2qname(u_int32_t, char *); > --=20 Ermal