Subject: type of sadb_x_kmprivate_reserved in pfkeyv2.h

From: Tushar Gohad <[email-masked]>
Date: Wed, 14 Jun 2006 15:13:08 -0700

Hi David and folks,

In include/linux/pfkeyv2.h, is the type 'u_int32_t' for 
sadb_x_kmprivate_reserved intentional or just an error while bringing in 
the PF_KEY IPsec extensions from KAME?

struct sadb_x_kmprivate {
        uint16_t        sadb_x_kmprivate_len;
        uint16_t        sadb_x_kmprivate_exttype;
        u_int32_t       sadb_x_kmprivate_reserved;    <====
} __attribute__((packed));

This is causing erroneous ipsec-tools builds. How does the 
__BIT_TYPES_DEFINED define work? Seems like u_int32_t does not get 
defined in include/linux/types.h when building a userland program such 
as ipsec-tools.

An easy fix is to change the type to uint32_t. Patch attached.

Thanks.
- Tushar

Source: MontaVista Software, Inc.
MR: 19039
Type: Defect Fix
Disposition: needs submitting to kernel.org
Signed-off-by: Tushar Gohad <[email-masked]>
Description:
    When bringing over the PF_KEY extensions for IPsec from the
KAME stack, folks probably forgot to change this only variable
to be of type uint32_t. Or otherwise. This is the easiest and 
harmless fix.

Index: linux-p4/include/linux/pfkeyv2.h
===================================================================
--- linux-p4.orig/include/linux/pfkeyv2.h
+++ linux-p4/include/linux/pfkeyv2.h
@@ -159,7 +159,7 @@ struct sadb_spirange {
 struct sadb_x_kmprivate {
 	uint16_t	sadb_x_kmprivate_len;
 	uint16_t	sadb_x_kmprivate_exttype;
-	u_int32_t	sadb_x_kmprivate_reserved;
+	uint32_t	sadb_x_kmprivate_reserved;
 } __attribute__((packed));
 /* sizeof(struct sadb_x_kmprivate) == 8 */