summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorVladimir Kotal <Vladimir.Kotal@Sun.COM>2010-01-07 23:36:11 +0100
committerVladimir Kotal <Vladimir.Kotal@Sun.COM>2010-01-07 23:36:11 +0100
commitdf8eb1c6f8abc69ad7de0e40e0ea573eb3000b0b (patch)
tree6208db82d19503f08a90ffc5ef68fd9502f93996 /usr/src
parentc5e0ece05310eec3c585344bcff875855f3f507a (diff)
downloadillumos-gate-df8eb1c6f8abc69ad7de0e40e0ea573eb3000b0b.tar.gz
6913939 'ipseckey get esp inbound' cores
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/cmd-inet/usr.sbin/ipsecutils/ipseckey.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/usr/src/cmd/cmd-inet/usr.sbin/ipsecutils/ipseckey.c b/usr/src/cmd/cmd-inet/usr.sbin/ipsecutils/ipseckey.c
index 529d269bc9..163e05dc5c 100644
--- a/usr/src/cmd/cmd-inet/usr.sbin/ipsecutils/ipseckey.c
+++ b/usr/src/cmd/cmd-inet/usr.sbin/ipsecutils/ipseckey.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -2984,6 +2984,7 @@ dodelget(int cmd, int satype, char *argv[], char *ebuf)
uint16_t srcport = 0, dstport = 0;
uint8_t proto = 0;
char *ep = NULL;
+ uint32_t sa_flags = 0;
/* Set the first extension header to right past the base message. */
nextext = (uint64_t *)(msg + 1);
@@ -3133,10 +3134,10 @@ dodelget(int cmd, int satype, char *argv[], char *ebuf)
/* The rest is pre-bzeroed for us. */
break;
case TOK_FLAG_INBOUND:
- assoc->sadb_sa_flags |= SADB_X_SAFLAGS_INBOUND;
+ sa_flags |= SADB_X_SAFLAGS_INBOUND;
break;
case TOK_FLAG_OUTBOUND:
- assoc->sadb_sa_flags |= SADB_X_SAFLAGS_OUTBOUND;
+ sa_flags |= SADB_X_SAFLAGS_OUTBOUND;
break;
default:
ERROR2(ep, ebuf, gettext(
@@ -3148,6 +3149,14 @@ dodelget(int cmd, int satype, char *argv[], char *ebuf)
handle_errors(ep, ebuf, B_TRUE, B_FALSE);
+ if (assoc == NULL) {
+ FATAL1(ep, ebuf, gettext(
+ "Need SA parameters for %s.\n"), thiscmd);
+ }
+
+ /* We can set the flags now with valid assoc in hand. */
+ assoc->sadb_sa_flags |= sa_flags;
+
if ((srcport != 0) && (src == NULL)) {
ALLOC_ADDR_EXT(src, SADB_EXT_ADDRESS_SRC);
sin6 = (struct sockaddr_in6 *)(src + 1);
@@ -3169,11 +3178,6 @@ dodelget(int cmd, int satype, char *argv[], char *ebuf)
/* So I have enough of the message to send it down! */
msg->sadb_msg_len = nextext - get_buffer;
- if (assoc == NULL) {
- FATAL1(ep, ebuf, gettext(
- "Need SA parameters for %s.\n"), thiscmd);
- }
-
if (cflag) {
/*
* Assume the checked cmd would have worked if it was actually