sainfo
static struct sainfo *cur_sainfo = NULL;
struct sainfo *check;
struct sainfo *sainfo;
if (iph2->sainfo != NULL) {
iph2->sainfo = getsainfo(iph2->sainfo->idsrc,
iph2->sainfo->iddst, iph2->sainfo->id_i,
NULL, iph2->sainfo->remoteid);
sainfo = iph2->sainfo;
if (sainfo == NULL) {
if (sainfo->lifetime < approval->lifetime) {
if (sainfo->lifebyte < approval->lifebyte) {
if (sainfo->pfs_group &&
sainfo->pfs_group != approval->pfs_group) {
if (sainfo->lifetime != approval->lifetime ||
sainfo->lifebyte != approval->lifebyte ||
sainfo->pfs_group != iph2->approval->pfs_group) {
for (alg = sainfo->algs[algclass_ipsec_auth]; alg; alg = alg->next) {
for (alg = sainfo->algs[algclass_ipsec_enc];
struct sainfo *sainfo; /* place holder of sainfo */
if (alg_oakley_dhdef_ok(iph2->sainfo->pfs_group))
if (alg_oakley_dhdef_ok(iph2->sainfo->pfs_group))
iph2->sainfo->pfs_group);
iph2->sainfo = getsainfo(idsrc, iddst, NULL, NULL, remoteid);
if (iph2->sainfo == NULL) {
"selected sainfo: %s\n", sainfo2str(iph2->sainfo));
iph2->sainfo = getsainfo(idsrc, iddst, iph2->ph1->id_p, client, iph2->ph1->rmconf->ph1id);
if (iph2->sainfo == NULL) {
if (iph2->sainfo->group != NULL)
if(group_check(iph2->ph1,&iph2->sainfo->group->v,1))
"selected sainfo: %s\n", sainfo2str(iph2->sainfo));
iph2->sainfo && iph2->sainfo->id_i) {
if (iph2->sainfo == NULL
|| iph2->sainfo->lifetime <= iph2->lifetime_secs) {
if (iph2->sainfo == NULL
|| iph2->sainfo->lifetime != iph2->lifetime_secs) {
newpp->lifetime = iph2->sainfo->lifetime;
newpp->lifebyte = iph2->sainfo->lifebyte;
newpp->pfs_group = iph2->sainfo->pfs_group;
if (set_satrnsbysainfo(newpr, iph2->sainfo) < 0) {
pp0->lifetime = iph2->sainfo->lifetime;
pp0->lifebyte = iph2->sainfo->lifebyte;
pp0->pfs_group = iph2->sainfo->pfs_group;
if (set_satrnsbysainfo(newpr, iph2->sainfo) < 0)
set_satrnsbysainfo(struct saproto *pr, struct sainfo *sainfo)
if (sainfo->algs[algclass_ipsec_auth] == NULL) {
for (a = sainfo->algs[algclass_ipsec_auth]; a; a = a->next) {
if (sainfo->algs[algclass_ipsec_enc] == NULL) {
for (a = sainfo->algs[algclass_ipsec_enc]; a; a = a->next) {
for (b = sainfo->algs[algclass_ipsec_auth]; b; b = b->next) {
if (sainfo->algs[algclass_ipsec_comp] == NULL) {
for (a = sainfo->algs[algclass_ipsec_comp]; a; a = a->next) {
struct sainfo;
extern int set_satrnsbysainfo(struct saproto *, struct sainfo *);
struct sainfo *
struct sainfo *new;
delsainfo(struct sainfo *si)
prisainfo(struct sainfo *s)
inssainfo(struct sainfo *new)
struct sainfo *s, *n;
remsainfo(struct sainfo *si)
struct sainfo *s, *next;
sainfo2str(const struct sainfo *si)
typedef LIST_HEAD(_sitree, sainfo) sainfo_tailq_head_t;
struct sainfo *
struct sainfo *s = NULL;
LIST_ENTRY(sainfo) chain;
extern struct sainfo *getsainfo(const vchar_t *,
extern struct sainfo *newsainfo(void);
extern void delsainfo(struct sainfo *);
extern void inssainfo(struct sainfo *);
extern void remsainfo(struct sainfo *);
extern const char * sainfo2str(const struct sainfo *);