]> git.hungrycats.org Git - linux/commitdiff
[IPSEC]: Make reqids 32-bits.
authorHerbert Xu <herbert@gondor.apana.org.au>
Sun, 20 Jul 2003 21:50:02 +0000 (14:50 -0700)
committerDavid S. Miller <davem@nuts.ninka.net>
Sun, 20 Jul 2003 21:50:02 +0000 (14:50 -0700)
include/linux/pfkeyv2.h
include/linux/xfrm.h
include/net/xfrm.h
net/ipv4/xfrm4_state.c
net/ipv6/xfrm6_state.c
net/key/af_key.c
net/xfrm/xfrm_state.c

index cf3a2f16223912f00b72ef97371e15c421f61486..fbfa0f52fdc9484aa2a6a397f60f85e7d11f2bd2 100644 (file)
@@ -190,7 +190,9 @@ struct sadb_x_ipsecrequest {
        uint16_t        sadb_x_ipsecrequest_proto;
        uint8_t         sadb_x_ipsecrequest_mode;
        uint8_t         sadb_x_ipsecrequest_level;
-       uint16_t        sadb_x_ipsecrequest_reqid;
+       uint16_t        sadb_x_ipsecrequest_reserved1;
+       uint32_t        sadb_x_ipsecrequest_reqid;
+       uint32_t        sadb_x_ipsecrequest_reserved2;
 } __attribute__((packed));
 /* sizeof(struct sadb_x_ipsecrequest) == 16 */
 
index d660c5f97c5875ff5cceafa57c5c256aae580223..64ea125f3562c18757a06eef6aa974a4553a84c7 100644 (file)
@@ -126,7 +126,7 @@ enum
 struct xfrm_user_tmpl {
        struct xfrm_id          id;
        xfrm_address_t          saddr;
-       __u16                   reqid;
+       __u32                   reqid;
        __u8                    mode;
        __u8                    share;
        __u8                    optional;
@@ -162,8 +162,8 @@ struct xfrm_usersa_info {
        struct xfrm_lifetime_cur        curlft;
        struct xfrm_stats               stats;
        __u32                           seq;
+       __u32                           reqid;
        __u16                           family;
-       __u16                           reqid;
        __u8                            mode; /* 0=transport,1=tunnel */
        __u8                            replay_window;
 };
index 4cb71a1e0313d3205e80f9a2843a127d6bf8a02c..e4618023716decb9cd30b3c175827a1c4e2beb13 100644 (file)
@@ -104,10 +104,10 @@ struct xfrm_state
 
        /* Parameters of this state. */
        struct {
+               u32             reqid;
                u8              mode;
                u8              replay_window;
                u8              aalgo, ealgo, calgo;
-               u16             reqid;
                u16             family;
                xfrm_address_t  saddr;
                int             header_len;
@@ -193,7 +193,7 @@ struct xfrm_state_afinfo {
                                                struct xfrm_tmpl *tmpl,
                                                xfrm_address_t *daddr, xfrm_address_t *saddr);
        struct xfrm_state       *(*state_lookup)(xfrm_address_t *daddr, u32 spi, u8 proto);
-       struct xfrm_state       *(*find_acq)(u8 mode, u16 reqid, u8 proto, 
+       struct xfrm_state       *(*find_acq)(u8 mode, u32 reqid, u8 proto, 
                                             xfrm_address_t *daddr, xfrm_address_t *saddr, 
                                             int create);
 };
@@ -244,7 +244,7 @@ struct xfrm_tmpl
 /* Source address of tunnel. Ignored, if it is not a tunnel. */
        xfrm_address_t          saddr;
 
-       __u16                   reqid;
+       __u32                   reqid;
 
 /* Mode: transport/tunnel */
        __u8                    mode;
@@ -801,7 +801,7 @@ struct xfrm_policy *xfrm_policy_byid(int dir, u32 id, int delete);
 void xfrm_policy_flush(void);
 u32 xfrm_get_acqseq(void);
 void xfrm_alloc_spi(struct xfrm_state *x, u32 minspi, u32 maxspi);
-struct xfrm_state * xfrm_find_acq(u8 mode, u16 reqid, u8 proto, 
+struct xfrm_state * xfrm_find_acq(u8 mode, u32 reqid, u8 proto, 
                                  xfrm_address_t *daddr, xfrm_address_t *saddr, 
                                  int create, unsigned short family);
 extern void xfrm_policy_flush(void);
index 5d51b9daa0d5266c66bf635d8a933b95a4e00ead..cd78fa0d6b883276268dcf0051e1d5ecf5a8e657 100644 (file)
@@ -58,7 +58,7 @@ __xfrm4_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto)
 }
 
 static struct xfrm_state *
-__xfrm4_find_acq(u8 mode, u16 reqid, u8 proto, 
+__xfrm4_find_acq(u8 mode, u32 reqid, u8 proto, 
                 xfrm_address_t *daddr, xfrm_address_t *saddr, 
                 int create)
 {
index cd1ef86b57f528333ec9a4290c3c62cac5e80a4f..c00c8ef25d83e44ae8d48ebf99869f908938fd5c 100644 (file)
@@ -65,7 +65,7 @@ __xfrm6_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto)
 }
 
 static struct xfrm_state *
-__xfrm6_find_acq(u8 mode, u16 reqid, u8 proto, 
+__xfrm6_find_acq(u8 mode, u32 reqid, u8 proto, 
                 xfrm_address_t *daddr, xfrm_address_t *saddr, 
                 int create)
 {
index a6e913e5f11daa05525684ec2350442c7f0a7b05..f481a136dad44335ec0c2e4f036db2f38c9a89dd 100644 (file)
@@ -1099,7 +1099,7 @@ static int pfkey_getspi(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h
        struct sadb_msg *out_hdr;
        struct xfrm_state *x = NULL;
        u8 mode;
-       u16 reqid;
+       u32 reqid;
        u8 proto;
        unsigned short family;
        xfrm_address_t *xsaddr = NULL, *xdaddr = NULL;
@@ -1496,7 +1496,7 @@ static int pfkey_promisc(struct sock *sk, struct sk_buff *skb, struct sadb_msg *
 static int check_reqid(struct xfrm_policy *xp, int dir, int count, void *ptr)
 {
        int i;
-       u16 reqid = *(u16*)ptr;
+       u32 reqid = *(u32*)ptr;
 
        for (i=0; i<xp->xfrm_nr; i++) {
                if (xp->xfrm_vec[i].reqid == reqid)
@@ -1505,10 +1505,10 @@ static int check_reqid(struct xfrm_policy *xp, int dir, int count, void *ptr)
        return 0;
 }
 
-static u16 gen_reqid(void)
+static u32 gen_reqid(void)
 {
-       u16 start;
-       static u16 reqid = IPSEC_MANUAL_REQID_MAX;
+       u32 start;
+       static u32 reqid = IPSEC_MANUAL_REQID_MAX;
 
        start = reqid;
        do {
@@ -1771,6 +1771,7 @@ static void pfkey_xfrm_policy2msg(struct sk_buff *skb, struct xfrm_policy *xp, i
                        size -= 2*socklen;
                rq = (void*)skb_put(skb, req_size);
                pol->sadb_x_policy_len += req_size/8;
+               memset(rq, 0, sizeof(*rq));
                rq->sadb_x_ipsecrequest_len = req_size;
                rq->sadb_x_ipsecrequest_proto = t->id.proto;
                rq->sadb_x_ipsecrequest_mode = t->mode+1;
index aa6bb0eb2e66cfed147962784f3f1c1f5e479264..86bd26e1cb19ef14e9efc414556469495c085960 100644 (file)
@@ -554,7 +554,7 @@ xfrm_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto,
 }
 
 struct xfrm_state *
-xfrm_find_acq(u8 mode, u16 reqid, u8 proto, 
+xfrm_find_acq(u8 mode, u32 reqid, u8 proto, 
              xfrm_address_t *daddr, xfrm_address_t *saddr, 
              int create, unsigned short family)
 {