All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Graf <tgraf@suug.ch>
To: Jamal Hadi Salim <hadi@znyx.com>
Cc: Stephen Hemminger <shemminger@osdl.org>, netdev@oss.sgi.com
Subject: Re: Iproute2: update
Date: Mon, 17 Jan 2005 21:20:22 +0100	[thread overview]
Message-ID: <20050117202022.GG26856@postel.suug.ch> (raw)
In-Reply-To: <1105897532.1097.749.camel@jzny.localdomain>

* Jamal Hadi Salim <1105897532.1097.749.camel@jzny.localdomain> 2005-01-16 12:45
> --- a/tc/Makefile	2005-01-12 15:19:46.000000000 -0500
> +++ b/tc/Makefile	2005-01-15 12:59:03.994966464 -0500
> @@ -23,6 +23,12 @@
>  TCMODULES += m_gact.o
>  TCMODULES += m_mirred.o
>  TCMODULES += m_ipt.o
> +#pedit
> +TCMODULES += m_pedit.o 
> +TCMODULES += p_ip.o
> +TCMODULES += p_icmp.o
> +TCMODULES += p_tcp.o
> +TCMODULES += p_udp.o
>  
>  TCOBJ += $(TCMODULES)
>  
> @@ -31,8 +37,6 @@
>  TCLIB += tc_cbq.o
>  TCLIB += tc_estimator.o
>  
> -CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PROB
> -
>  
>  TCSO :=
>  TCSO += q_netem.so
> @@ -40,10 +44,13 @@
>    TCSO += q_atm.so
>  endif
>  
> +
>  NETEM_DIST := normal.dist pareto.dist paretonormal.dist
>  
> +IPT_INCL = /root/iptables-1.2.11/include

I moved this to configure:

--- 1.9/configure	2004-12-08 21:12:11 +01:00
+++ edited/configure	2005-01-17 20:55:38 +01:00
@@ -42,3 +42,17 @@
 	echo "TC_CONFIG_ACTION_MIRRED=y" >>Config
 fi
 
+if [ -e "tc/m_ipt.c" ]
+then
+	echo "   IPT found"
+	echo "Enter path to iptables source directory or \"disable\""
+	echo -n "Path: "
+	read PATH
+	if [ "$PATH" = "disable" ]
+	then
+		echo "TC_CONFIG_ACTION_IPT=n" >>Config
+	else
+		echo "TC_CONFIG_ACTION_IPT=y" >>Config
+		echo "IPT_INCL=${PATH}/include" >>Config
+	fi
+fi

and the Makefile part:

--- 1.21/tc/Makefile	2004-12-08 21:12:11 +01:00
+++ edited/tc/Makefile	2005-01-17 20:49:36 +01:00
@@ -21,7 +21,15 @@
 TCMODULES += q_hfsc.o
 TCMODULES += q_htb.o
 TCMODULES += m_gact.o
+ifeq ($(TC_CONFIG_ACTION_IPT),y)
+TCMODULES += m_ipt.o
+endif
 TCMODULES += m_mirred.o
+TCMODULES += m_pedit.o 
+TCMODULES += p_ip.o
+TCMODULES += p_icmp.o
+TCMODULES += p_tcp.o
+TCMODULES += p_udp.o
 
 TCOBJ += $(TCMODULES)
 
@@ -30,8 +38,7 @@
 TCLIB += tc_cbq.o
 TCLIB += tc_estimator.o
 
-CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PROB
-
+CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PROB -I$(IPT_INCL)
 
 TCSO :=
 TCSO += q_netem.so

> +struct m_pedit_util 
> +*get_pedit_kind(char *str)
> +{
> +	void *dlh;
> +	char buf[256];
> +	struct  m_pedit_util *p;
> +
> +	for (p = pedit_list; p; p = p->next) {
> +		if (strcmp(p->id, str) == 0)
> +			return p;
> +	}
> +
> +	snprintf(buf, sizeof(buf), "p_%s.so", str);
> +	dlh = dlopen(buf, RTLD_LAZY);
> +	if (dlh == NULL) {
> +		dlh = pBODY;
> +		if (dlh == NULL) {
> +			dlh = pBODY = dlopen(NULL, RTLD_LAZY);
> +			if (dlh == NULL)
> +				goto noexist;

I made pBODY a static variable within get_pedit_kind. same in m_action.c

> +noexist:
> +	p = malloc(sizeof(*p));
> +	if (p) {
> +		memset(p, 0, sizeof(*p));
> +		strncpy(p->id, str, 15);
> +		p->parse_peopt = pedit_parse_nopopt;
> +		goto reg;

Quite hacky ;->


> +int
> +pack_key32(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey)
> +{
> +	if (tkey->off > (tkey->off & ~3)) {
> +		fprintf(stderr,
> +			"pack_key32: 32 bit offsets must begin in 32bit boundaries\n");
> +		return -1;
> +	}
> +
> +	tkey->val = htonl(tkey->val & retain);
> +	tkey->mask = htonl(tkey->mask | ~retain);
> +	/* jamal remove this - it is not necessary given the if check above */
> +	tkey->off &= ~3;

Are there multiple of you? ;->

> +int
> +pack_key16(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey)
> +{
> +	int ind = 0, stride = 0;
> +	__u32 m[4] = {0xFFFF0000,0xFF0000FF,0x0000FFFF};

Missing check for 16bit boundry? You can also completely remove
theses issues by writing in 8bit chunks. OTOH, the user can
request you to do so, so no problem.

> +#if jamal
> +	} else if (strcmp(*argv, "help") == 0) {
> +		p_explain();
> +		return -1;
> +#endif

So you think you're the only one worth giving help? ;-> Just kidding.


> +	tail = (struct rtattr *) (((void *) n) + NLMSG_ALIGN(n->nlmsg_len));
> +	addattr_l(n, MAX_MSG, tca_id, NULL, 0);
> +	addattr_l(n, MAX_MSG, TCA_PEDIT_PARMS,&sel, sizeof(sel.sel)+sel.sel.nkeys*sizeof(struct tc_pedit_key));
> +	tail->rta_len =
> +	    (((void *) n) + NLMSG_ALIGN(n->nlmsg_len)) - (void *) tail;

I changed this and all other occurences to use the NLMSG_TAIL macro (added in my tree)

+#define NLMSG_TAIL(nmsg) \
+       ((struct rtattr *) (((void *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))

> +struct m_pedit_util
> +{
> +	struct m_pedit_util *next;
> +	char    id[16];

I made this a PEDITKINDSIZ and made the strncpy's use it

I'll put this changes into my tree given you're fine with it and stephen
can pull them. As I said, the ipt code is still missing, I can merge
them into my tree as well if you want.

  parent reply	other threads:[~2005-01-17 20:20 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-12 20:59 Iproute2: update Stephen Hemminger
2005-01-16 17:09 ` jamal
2005-01-16 17:45   ` Jamal Hadi Salim
2005-01-17 19:39     ` Thomas Graf
2005-01-17 20:20     ` Thomas Graf [this message]
2005-01-17 20:57       ` Thomas Graf
2005-01-17 21:39         ` jamal
2005-01-17 22:24           ` Thomas Graf
2005-01-17 22:39             ` jamal
2005-01-17 22:24     ` Stephen Hemminger
2005-03-21 20:11 ` Lennert Buytenhek
2005-03-29 18:09   ` Stephen Hemminger
2005-03-29 19:07     ` Lennert Buytenhek
  -- strict thread matches above, loose matches on Subject: below --
2006-12-05 18:17 iproute2 update Stephen Hemminger
2006-12-05 18:43 ` Patrick McHardy
2006-12-06  3:58 ` Masahide NAKAMURA

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050117202022.GG26856@postel.suug.ch \
    --to=tgraf@suug.ch \
    --cc=hadi@znyx.com \
    --cc=netdev@oss.sgi.com \
    --cc=shemminger@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.