diff options
Diffstat (limited to 'net/key/af_key.c')
-rw-r--r-- | net/key/af_key.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/net/key/af_key.c b/net/key/af_key.c index 560c93c10890..3fae5c4b48f6 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c | |||
@@ -1293,13 +1293,6 @@ static int key_notify_sa(struct xfrm_state *x, struct km_event *c) | |||
1293 | if (c->event == XFRM_SAP_DELETED) | 1293 | if (c->event == XFRM_SAP_DELETED) |
1294 | hsc = 0; | 1294 | hsc = 0; |
1295 | 1295 | ||
1296 | if (c->event == XFRM_SAP_EXPIRED) { | ||
1297 | if (c->data) | ||
1298 | hsc = 2; | ||
1299 | else | ||
1300 | hsc = 1; | ||
1301 | } | ||
1302 | |||
1303 | skb = pfkey_xfrm_state2msg(x, 0, hsc); | 1296 | skb = pfkey_xfrm_state2msg(x, 0, hsc); |
1304 | 1297 | ||
1305 | if (IS_ERR(skb)) | 1298 | if (IS_ERR(skb)) |
@@ -1534,7 +1527,7 @@ static int key_notify_sa_flush(struct km_event *c) | |||
1534 | if (!skb) | 1527 | if (!skb) |
1535 | return -ENOBUFS; | 1528 | return -ENOBUFS; |
1536 | hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); | 1529 | hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); |
1537 | hdr->sadb_msg_satype = pfkey_proto2satype(c->data); | 1530 | hdr->sadb_msg_satype = pfkey_proto2satype(c->data.proto); |
1538 | hdr->sadb_msg_seq = c->seq; | 1531 | hdr->sadb_msg_seq = c->seq; |
1539 | hdr->sadb_msg_pid = c->pid; | 1532 | hdr->sadb_msg_pid = c->pid; |
1540 | hdr->sadb_msg_version = PF_KEY_V2; | 1533 | hdr->sadb_msg_version = PF_KEY_V2; |
@@ -1556,7 +1549,7 @@ static int pfkey_flush(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hd | |||
1556 | return -EINVAL; | 1549 | return -EINVAL; |
1557 | 1550 | ||
1558 | xfrm_state_flush(proto); | 1551 | xfrm_state_flush(proto); |
1559 | c.data = proto; | 1552 | c.data.proto = proto; |
1560 | c.seq = hdr->sadb_msg_seq; | 1553 | c.seq = hdr->sadb_msg_seq; |
1561 | c.pid = hdr->sadb_msg_pid; | 1554 | c.pid = hdr->sadb_msg_pid; |
1562 | c.event = XFRM_SAP_FLUSHED; | 1555 | c.event = XFRM_SAP_FLUSHED; |
@@ -1969,7 +1962,7 @@ static int key_notify_policy(struct xfrm_policy *xp, int dir, struct km_event *c | |||
1969 | out_hdr = (struct sadb_msg *) out_skb->data; | 1962 | out_hdr = (struct sadb_msg *) out_skb->data; |
1970 | out_hdr->sadb_msg_version = PF_KEY_V2; | 1963 | out_hdr->sadb_msg_version = PF_KEY_V2; |
1971 | 1964 | ||
1972 | if (c->data && c->event == XFRM_SAP_DELETED) | 1965 | if (c->data.byid && c->event == XFRM_SAP_DELETED) |
1973 | out_hdr->sadb_msg_type = SADB_X_SPDDELETE2; | 1966 | out_hdr->sadb_msg_type = SADB_X_SPDDELETE2; |
1974 | else | 1967 | else |
1975 | out_hdr->sadb_msg_type = event2poltype(c->event); | 1968 | out_hdr->sadb_msg_type = event2poltype(c->event); |
@@ -2180,7 +2173,7 @@ static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h | |||
2180 | c.seq = hdr->sadb_msg_seq; | 2173 | c.seq = hdr->sadb_msg_seq; |
2181 | c.pid = hdr->sadb_msg_pid; | 2174 | c.pid = hdr->sadb_msg_pid; |
2182 | if (hdr->sadb_msg_type == SADB_X_SPDDELETE2) { | 2175 | if (hdr->sadb_msg_type == SADB_X_SPDDELETE2) { |
2183 | c.data = 1; // to signal pfkey of SADB_X_SPDDELETE2 | 2176 | c.data.byid = 1; |
2184 | c.event = XFRM_SAP_DELETED; | 2177 | c.event = XFRM_SAP_DELETED; |
2185 | km_policy_notify(xp, pol->sadb_x_policy_dir-1, &c); | 2178 | km_policy_notify(xp, pol->sadb_x_policy_dir-1, &c); |
2186 | } else { | 2179 | } else { |
@@ -2460,7 +2453,7 @@ static int key_notify_sa_expire(struct xfrm_state *x, struct km_event *c) | |||
2460 | int hard; | 2453 | int hard; |
2461 | int hsc; | 2454 | int hsc; |
2462 | 2455 | ||
2463 | hard = c->data; | 2456 | hard = c->data.hard; |
2464 | if (hard) | 2457 | if (hard) |
2465 | hsc = 2; | 2458 | hsc = 2; |
2466 | else | 2459 | else |