Commit cfd280c91253 ("net: sync some IP headers with glibc") changed a set of
define's to an enum (with no explanation why) which introduced a bug
in module mip6 where aliases are generated using the IPPROTO_* defines;
mip6 doesn't load if require_module called with the aliases from
xfrm_get_type().
Reverting this change back to define's to fix the aliases.
modinfo mip6 (before this change)
alias: xfrm-type-10-IPPROTO_DSTOPTS
alias: xfrm-type-10-IPPROTO_ROUTING
modinfo mip6 (after this change)
alias: xfrm-type-10-43
alias: xfrm-type-10-60
Signed-off-by: Jan Moskyto Matejka <[email protected]>
---
include/uapi/linux/in6.h | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/include/uapi/linux/in6.h b/include/uapi/linux/in6.h
index 633b93c..e9a1d2d97 100644
--- a/include/uapi/linux/in6.h
+++ b/include/uapi/linux/in6.h
@@ -128,22 +128,13 @@ struct in6_flowlabel_req {
* IPV6 extension headers
*/
#if __UAPI_DEF_IPPROTO_V6
-enum {
- IPPROTO_HOPOPTS = 0, /* IPv6 hop-by-hop options */
-#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS
- IPPROTO_ROUTING = 43, /* IPv6 routing header */
-#define IPPROTO_ROUTING IPPROTO_ROUTING
- IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header */
-#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT
- IPPROTO_ICMPV6 = 58, /* ICMPv6 */
-#define IPPROTO_ICMPV6 IPPROTO_ICMPV6
- IPPROTO_NONE = 59, /* IPv6 no next header */
-#define IPPROTO_NONE IPPROTO_NONE
- IPPROTO_DSTOPTS = 60, /* IPv6 destination options */
-#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS
- IPPROTO_MH = 135, /* IPv6 mobility header */
-#define IPPROTO_MH IPPROTO_MH
-};
+#define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */
+#define IPPROTO_ROUTING 43 /* IPv6 routing header */
+#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
+#define IPPROTO_ICMPV6 58 /* ICMPv6 */
+#define IPPROTO_NONE 59 /* IPv6 no next header */
+#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */
+#define IPPROTO_MH 135 /* IPv6 mobility header */
#endif /* __UAPI_DEF_IPPROTO_V6 */
/*
--
1.8.4.5
On 02/06/2014 06:10 AM, Jan Moskyto Matejka wrote:
> Commit cfd280c91253 ("net: sync some IP headers with glibc") changed a set of
> define's to an enum (with no explanation why) which introduced a bug
> in module mip6 where aliases are generated using the IPPROTO_* defines;
> mip6 doesn't load if require_module called with the aliases from
> xfrm_get_type().
I wrote that code and I apologize for not giving a reason at
the time.
There are two reasons:
* It makes the debuginfo better and debugging easier via the enum.
* It harmonizes those headers with what is already in glibc.
Harmonizing this header with glibc makes it easier for userspace
to synchronize changes and perhaps eventually use the UAPI headers
directly.
> Reverting this change back to define's to fix the aliases.
>
> modinfo mip6 (before this change)
> alias: xfrm-type-10-IPPROTO_DSTOPTS
> alias: xfrm-type-10-IPPROTO_ROUTING
>
> modinfo mip6 (after this change)
> alias: xfrm-type-10-43
> alias: xfrm-type-10-60
Instead of reverting these changes I suggest someone fix
whatever is processing that information.
I do not condone the application of this patch for the
above two reasons. Though you might argue that I should
just make all debuggers and compilers better at dealing
with DW_at_macro_info/DW_MACINFO_* debug info... and
you also would not be wrong.
I hope that answers your question.
> Signed-off-by: Jan Moskyto Matejka <[email protected]>
> ---
> include/uapi/linux/in6.h | 23 +++++++----------------
> 1 file changed, 7 insertions(+), 16 deletions(-)
>
> diff --git a/include/uapi/linux/in6.h b/include/uapi/linux/in6.h
> index 633b93c..e9a1d2d97 100644
> --- a/include/uapi/linux/in6.h
> +++ b/include/uapi/linux/in6.h
> @@ -128,22 +128,13 @@ struct in6_flowlabel_req {
> * IPV6 extension headers
> */
> #if __UAPI_DEF_IPPROTO_V6
> -enum {
> - IPPROTO_HOPOPTS = 0, /* IPv6 hop-by-hop options */
> -#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS
> - IPPROTO_ROUTING = 43, /* IPv6 routing header */
> -#define IPPROTO_ROUTING IPPROTO_ROUTING
> - IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header */
> -#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT
> - IPPROTO_ICMPV6 = 58, /* ICMPv6 */
> -#define IPPROTO_ICMPV6 IPPROTO_ICMPV6
> - IPPROTO_NONE = 59, /* IPv6 no next header */
> -#define IPPROTO_NONE IPPROTO_NONE
> - IPPROTO_DSTOPTS = 60, /* IPv6 destination options */
> -#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS
> - IPPROTO_MH = 135, /* IPv6 mobility header */
> -#define IPPROTO_MH IPPROTO_MH
> -};
> +#define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */
> +#define IPPROTO_ROUTING 43 /* IPv6 routing header */
> +#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
> +#define IPPROTO_ICMPV6 58 /* ICMPv6 */
> +#define IPPROTO_NONE 59 /* IPv6 no next header */
> +#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */
> +#define IPPROTO_MH 135 /* IPv6 mobility header */
> #endif /* __UAPI_DEF_IPPROTO_V6 */
>
> /*
>
Cheers,
Carlos.
On Thu, Feb 6, 2014 at 1:33 PM, Carlos O'Donell <[email protected]> wrote:
> On 02/06/2014 06:10 AM, Jan Moskyto Matejka wrote:
>> Reverting this change back to define's to fix the aliases.
>>
>> modinfo mip6 (before this change)
>> alias: xfrm-type-10-IPPROTO_DSTOPTS
>> alias: xfrm-type-10-IPPROTO_ROUTING
>>
>> modinfo mip6 (after this change)
>> alias: xfrm-type-10-43
>> alias: xfrm-type-10-60
>
> Instead of reverting these changes I suggest someone fix
> whatever is processing that information.
It is stringfy by c preprocessor. enum should be processed
after preprocessing, therefore fails to be converted to it
real value at preprocessing stage.
From: Jan Moskyto Matejka <[email protected]>
Date: Thu, 6 Feb 2014 12:10:00 +0100
> Commit cfd280c91253 ("net: sync some IP headers with glibc") changed a set of
> define's to an enum (with no explanation why) which introduced a bug
> in module mip6 where aliases are generated using the IPPROTO_* defines;
> mip6 doesn't load if require_module called with the aliases from
> xfrm_get_type().
>
> Reverting this change back to define's to fix the aliases.
>
> modinfo mip6 (before this change)
> alias: xfrm-type-10-IPPROTO_DSTOPTS
> alias: xfrm-type-10-IPPROTO_ROUTING
>
> modinfo mip6 (after this change)
> alias: xfrm-type-10-43
> alias: xfrm-type-10-60
>
> Signed-off-by: Jan Moskyto Matejka <[email protected]>
I have to apply this, thanks Jan.