* copy secasvar data into sadb_address. */
| 3780 | * copy secasvar data into sadb_address. |
| 3781 | */ |
| 3782 | static struct mbuf * |
| 3783 | key_setsadbsa(struct secasvar *sav) |
| 3784 | { |
| 3785 | struct mbuf *m; |
| 3786 | struct sadb_sa *p; |
| 3787 | int len; |
| 3788 | |
| 3789 | len = PFKEY_ALIGN8(sizeof(struct sadb_sa)); |
| 3790 | m = m_get2(len, M_NOWAIT, MT_DATA, 0); |
| 3791 | if (m == NULL) |
| 3792 | return (NULL); |
| 3793 | m_align(m, len); |
| 3794 | m->m_len = len; |
| 3795 | p = mtod(m, struct sadb_sa *); |
| 3796 | bzero(p, len); |
| 3797 | p->sadb_sa_len = PFKEY_UNIT64(len); |
| 3798 | p->sadb_sa_exttype = SADB_EXT_SA; |
| 3799 | p->sadb_sa_spi = sav->spi; |
| 3800 | p->sadb_sa_replay = sav->replay ? |
| 3801 | (sav->replay->wsize > UINT8_MAX ? UINT8_MAX : |
| 3802 | sav->replay->wsize): 0; |
| 3803 | p->sadb_sa_state = sav->state; |
| 3804 | p->sadb_sa_auth = sav->alg_auth; |
| 3805 | p->sadb_sa_encrypt = sav->alg_enc; |
| 3806 | p->sadb_sa_flags = sav->flags & SADB_KEY_FLAGS_MAX; |
| 3807 | return (m); |
| 3808 | } |
| 3809 | |
| 3810 | /* |
| 3811 | * set data into sadb_address. |
no test coverage detected