Subject: Re: [IPROUTE PATCH v2] iproute2: act_ipt fix xtables breakage on older versions.

From: Jamal Hadi Salim <[email-masked]>
Date: Tue, 30 Apr 2013 08:59:58 -0400

Hi Alex,
Theres still some confusion on my part.

On 13-04-29 11:50 AM, Alexander Duyck wrote:

> The first is that xtables_merge_options only has 3 parameters.  It appears
> this is how this code was originally.

what you are describing above is still not making sense:

  As such for the case where the version
> is less than 6 I am assuming it would be correct to maintain the original
> setup that only had 3 parameters being passed instead of 4.
>

More below, lets just pick one of those:

> @@ -335,8 +338,7 @@ print_ipt(struct action_util *au,FILE * f, struct rtattr *arg)
>   					    m->x6_options,
>   					    &m->option_offset);
>   #else
> -		opts = xtables_merge_options(tcipt_globals.orig_opts,
> -					     tcipt_globals.opts,
> +		opts = xtables_merge_options(tcipt_globals.opts,
>   					     m->extra_opts,
>   					     &m->option_offset);
>   #endif
>

Here's the original equivalent change that you are updating:
-------
-                       tcipt_globals.opts =
-                           xtables_merge_options(
  #if (XTABLES_VERSION_CODE >= 6)
-                                                 tcipt_globals.orig_opts,
+               opts = xtables_options_xfrm(tcipt_globals.orig_opts,
+                                           tcipt_globals.opts,
+                                           m->x6_options,
+                                           &m->option_offset);
+#else
+               opts = xtables_merge_options(tcipt_globals.orig_opts,
+                                            tcipt_globals.opts,
+                                            m->extra_opts,
+                                            &m->option_offset);
  #endif
-                                                 tcipt_globals.opts,
-                                                 m->extra_opts,
-                                                 &m->option_offset);
------------------

I see, originally these parameters for xtables_merge_options():
tcipt_globals.orig_opts  <---- This is what you are trying to kill
tcipt_globals.opts
m->extra_opts
&m->option_offset

Which says there were 4 parameters to begin with....
Unless you are saying we had it wrong the first time. Pablo?

cheers,
jamal