diff options
author | Vladimir Kotal <Vladimir.Kotal@Sun.COM> | 2010-01-07 23:36:11 +0100 |
---|---|---|
committer | Vladimir Kotal <Vladimir.Kotal@Sun.COM> | 2010-01-07 23:36:11 +0100 |
commit | df8eb1c6f8abc69ad7de0e40e0ea573eb3000b0b (patch) | |
tree | 6208db82d19503f08a90ffc5ef68fd9502f93996 /usr/src | |
parent | c5e0ece05310eec3c585344bcff875855f3f507a (diff) | |
download | illumos-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.c | 20 |
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 |