diff options
author | 2000-12-24 04:18:42 +0000 | |
---|---|---|
committer | 2000-12-24 04:18:42 +0000 | |
commit | 28f9c393ae2ee42a924abe1fd554dd6f8a9c9981 (patch) | |
tree | 1e6946989036d03d28b0b2ccf97fe47de23e6668 | |
parent | Extra argument in the function to tdb_walk(), indicating last TDB. (diff) | |
download | wireguard-openbsd-28f9c393ae2ee42a924abe1fd554dd6f8a9c9981.tar.xz wireguard-openbsd-28f9c393ae2ee42a924abe1fd554dd6f8a9c9981.zip |
Set sequence number to zero for last message in SADB_DUMP, close pr 1583.
-rw-r--r-- | sys/net/pfkeyv2.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/net/pfkeyv2.c b/sys/net/pfkeyv2.c index c907f0d3f0f..7cc139035b7 100644 --- a/sys/net/pfkeyv2.c +++ b/sys/net/pfkeyv2.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pfkeyv2.c,v 1.53 2000/12/15 20:32:09 provos Exp $ */ +/* $OpenBSD: pfkeyv2.c,v 1.54 2000/12/24 04:18:42 angelos Exp $ */ /* %%% copyright-nrl-97 This software is Copyright 1997-1998 by Randall Atkinson, Ronald Lee, @@ -81,8 +81,8 @@ int pfkeyv2_policy(struct ipsec_acquire *, void **, void **); int pfkeyv2_release(struct socket *); int pfkeyv2_send(struct socket *, void *, int); int pfkeyv2_sendmessage(void **, int, struct socket *, u_int8_t, int); -int pfkeyv2_dump_walker(struct tdb *, void *); -int pfkeyv2_flush_walker(struct tdb *, void *); +int pfkeyv2_dump_walker(struct tdb *, void *, int); +int pfkeyv2_flush_walker(struct tdb *, void *, int); int pfkeyv2_get_proto_alg(u_int8_t, u_int8_t *, int *); int pfdatatopacket(void *, int, struct mbuf **); @@ -1026,7 +1026,7 @@ pfkeyv2_get(struct tdb *sa, void **headers, void **buffer) * Dump a TDB. */ int -pfkeyv2_dump_walker(struct tdb *sa, void *state) +pfkeyv2_dump_walker(struct tdb *sa, void *state, int last) { struct dump_state *dump_state = (struct dump_state *) state; void *headers[SADB_EXT_MAX+1], *buffer; @@ -1043,6 +1043,9 @@ pfkeyv2_dump_walker(struct tdb *sa, void *state) if ((rval = pfkeyv2_get(sa, headers, &buffer)) != 0) return rval; + if (last) + ((struct sadb_msg *)headers[0])->sadb_msg_seq = 0; + /* Send the message to the specified socket */ rval = pfkeyv2_sendmessage(headers, PFKEYV2_SENDMESSAGE_UNICAST, dump_state->socket, 0, 0); @@ -1059,7 +1062,7 @@ pfkeyv2_dump_walker(struct tdb *sa, void *state) * Delete an SA. */ int -pfkeyv2_flush_walker(struct tdb *sa, void *satype_vp) +pfkeyv2_flush_walker(struct tdb *sa, void *satype_vp, int last) { if (!(*((u_int8_t *) satype_vp)) || sa->tdb_satype == *((u_int8_t *) satype_vp)) |