diff options
Diffstat (limited to 'usr/src/lib')
| -rw-r--r-- | usr/src/lib/libipsecutil/common/ipsec_util.c | 24 | ||||
| -rw-r--r-- | usr/src/lib/libipsecutil/common/ipsec_util.h | 2 |
2 files changed, 18 insertions, 8 deletions
diff --git a/usr/src/lib/libipsecutil/common/ipsec_util.c b/usr/src/lib/libipsecutil/common/ipsec_util.c index 56ced009ee..e5a4daecdd 100644 --- a/usr/src/lib/libipsecutil/common/ipsec_util.c +++ b/usr/src/lib/libipsecutil/common/ipsec_util.c @@ -2438,7 +2438,7 @@ void save_assoc(uint64_t *buffer, FILE *ofile) { int terrno; - int seen_proto = 0; + boolean_t seen_proto = B_FALSE, seen_iproto = B_FALSE; uint64_t *current; struct sadb_address *addr; struct sadb_msg *samsg = (struct sadb_msg *)buffer; @@ -2463,6 +2463,7 @@ save_assoc(uint64_t *buffer, FILE *ofile) struct sadb_sa *assoc; ext = (struct sadb_ext *)current; + addr = (struct sadb_address *)ext; /* Just in case... */ switch (ext->sadb_ext_type) { case SADB_EXT_SA: assoc = (struct sadb_sa *)ext; @@ -2523,19 +2524,28 @@ save_assoc(uint64_t *buffer, FILE *ofile) } savenl(); break; - case SADB_EXT_ADDRESS_SRC: - case SADB_EXT_ADDRESS_DST: case SADB_X_EXT_ADDRESS_INNER_SRC: case SADB_X_EXT_ADDRESS_INNER_DST: - case SADB_X_EXT_ADDRESS_NATT_REM: - case SADB_X_EXT_ADDRESS_NATT_LOC: - addr = (struct sadb_address *)ext; + if (!seen_iproto && addr->sadb_address_proto) { + (void) fprintf(ofile, " iproto %d", + addr->sadb_address_proto); + savenl(); + seen_iproto = B_TRUE; + } + goto skip_srcdst; /* Hack to avoid cases below... */ + /* FALLTHRU */ + case SADB_EXT_ADDRESS_SRC: + case SADB_EXT_ADDRESS_DST: if (!seen_proto && addr->sadb_address_proto) { (void) fprintf(ofile, " proto %d", addr->sadb_address_proto); savenl(); - seen_proto = 1; + seen_proto = B_TRUE; } + /* FALLTHRU */ + case SADB_X_EXT_ADDRESS_NATT_REM: + case SADB_X_EXT_ADDRESS_NATT_LOC: +skip_srcdst: if (!save_address(addr, ofile)) { tidyup(); bail(dgettext(TEXT_DOMAIN, "save_address")); diff --git a/usr/src/lib/libipsecutil/common/ipsec_util.h b/usr/src/lib/libipsecutil/common/ipsec_util.h index d540e2bd2e..a78831e678 100644 --- a/usr/src/lib/libipsecutil/common/ipsec_util.h +++ b/usr/src/lib/libipsecutil/common/ipsec_util.h @@ -56,7 +56,7 @@ extern "C" { /* used for file parsing */ #define NBUF_SIZE 16 -#define IBUF_SIZE 512 +#define IBUF_SIZE 2048 #define COMMENT_CHAR '#' #define CONT_CHAR '\\' #define QUOTE_CHAR '"' |
