MCPcopy Create free account
hub / github.com/F-Stack/f-stack / key_setdumpsa

Function key_setdumpsa

freebsd/netipsec/key.c:3534–3736  ·  view source on GitHub ↗

* subroutine for SADB_GET and SADB_DUMP. */

Source from the content-addressed store, hash-verified

3532 * subroutine for SADB_GET and SADB_DUMP.
3533 */
3534static struct mbuf *
3535key_setdumpsa(struct secasvar *sav, uint8_t type, uint8_t satype,
3536 uint32_t seq, uint32_t pid)
3537{
3538 struct seclifetime lft_c;
3539 struct mbuf *result = NULL, *tres = NULL, *m;
3540 int i, dumporder[] = {
3541 SADB_EXT_SA, SADB_X_EXT_SA2, SADB_X_EXT_SA_REPLAY,
3542 SADB_EXT_LIFETIME_HARD, SADB_EXT_LIFETIME_SOFT,
3543 SADB_EXT_LIFETIME_CURRENT, SADB_EXT_ADDRESS_SRC,
3544 SADB_EXT_ADDRESS_DST, SADB_EXT_ADDRESS_PROXY,
3545 SADB_EXT_KEY_AUTH, SADB_EXT_KEY_ENCRYPT,
3546 SADB_EXT_IDENTITY_SRC, SADB_EXT_IDENTITY_DST,
3547 SADB_EXT_SENSITIVITY,
3548 SADB_X_EXT_NAT_T_TYPE,
3549 SADB_X_EXT_NAT_T_SPORT, SADB_X_EXT_NAT_T_DPORT,
3550 SADB_X_EXT_NAT_T_OAI, SADB_X_EXT_NAT_T_OAR,
3551 SADB_X_EXT_NAT_T_FRAG,
3552 };
3553 uint32_t replay_count;
3554
3555 m = key_setsadbmsg(type, 0, satype, seq, pid, sav->refcnt);
3556 if (m == NULL)
3557 goto fail;
3558 result = m;
3559
3560 for (i = nitems(dumporder) - 1; i >= 0; i--) {
3561 m = NULL;
3562 switch (dumporder[i]) {
3563 case SADB_EXT_SA:
3564 m = key_setsadbsa(sav);
3565 if (!m)
3566 goto fail;
3567 break;
3568
3569 case SADB_X_EXT_SA2:
3570 SECASVAR_LOCK(sav);
3571 replay_count = sav->replay ? sav->replay->count : 0;
3572 SECASVAR_UNLOCK(sav);
3573 m = key_setsadbxsa2(sav->sah->saidx.mode, replay_count,
3574 sav->sah->saidx.reqid);
3575 if (!m)
3576 goto fail;
3577 break;
3578
3579 case SADB_X_EXT_SA_REPLAY:
3580 if (sav->replay == NULL ||
3581 sav->replay->wsize <= UINT8_MAX)
3582 continue;
3583
3584 m = key_setsadbxsareplay(sav->replay->wsize);
3585 if (!m)
3586 goto fail;
3587 break;
3588
3589 case SADB_EXT_ADDRESS_SRC:
3590 m = key_setsadbaddr(SADB_EXT_ADDRESS_SRC,
3591 &sav->sah->saidx.src.sa,

Callers 2

key_getFunction · 0.85
key_dumpFunction · 0.85

Calls 13

key_setsadbmsgFunction · 0.85
key_setsadbsaFunction · 0.85
key_setsadbxsa2Function · 0.85
key_setsadbxsareplayFunction · 0.85
key_setsadbaddrFunction · 0.85
key_setkeyFunction · 0.85
counter_u64_fetchFunction · 0.85
key_setlifetimeFunction · 0.85
key_setsadbxtypeFunction · 0.85
key_setsadbxportFunction · 0.85
m_catFunction · 0.85
m_pullupFunction · 0.85

Tested by

no test coverage detected