View | Details | Raw Unified | Return to bug 200282 | Differences between
and this patch

Collapse All | Expand All

(-)sys/netipsec/key.c (-10 / +20 lines)
Lines 537-543 Link Here
537
	const struct sadb_msghdr *);
537
	const struct sadb_msghdr *);
538
static int key_register(struct socket *, struct mbuf *,
538
static int key_register(struct socket *, struct mbuf *,
539
	const struct sadb_msghdr *);
539
	const struct sadb_msghdr *);
540
static int key_expire(struct secasvar *);
540
static int key_expire(struct secasvar *, int);
541
static int key_flush(struct socket *, struct mbuf *,
541
static int key_flush(struct socket *, struct mbuf *,
542
	const struct sadb_msghdr *);
542
	const struct sadb_msghdr *);
543
static int key_dump(struct socket *, struct mbuf *,
543
static int key_dump(struct socket *, struct mbuf *,
Lines 4259-4265 Link Here
4259
				 * (DYING state)
4259
				 * (DYING state)
4260
				 */
4260
				 */
4261
				if (sav->lft_c->usetime != 0)
4261
				if (sav->lft_c->usetime != 0)
4262
					key_expire(sav);
4262
					key_expire(sav, 0);
4263
			}
4263
			}
4264
			/* check SOFT lifetime by bytes */
4264
			/* check SOFT lifetime by bytes */
4265
			/*
4265
			/*
Lines 4276-4282 Link Here
4276
				 * message in the status of
4276
				 * message in the status of
4277
				 * DYING. Do remove below code.
4277
				 * DYING. Do remove below code.
4278
				 */
4278
				 */
4279
				key_expire(sav);
4279
				key_expire(sav, 0);
4280
			}
4280
			}
4281
		}
4281
		}
4282
4282
Lines 4295-4300 Link Here
4295
4295
4296
			if (sav->lft_h->addtime != 0 &&
4296
			if (sav->lft_h->addtime != 0 &&
4297
			    now - sav->created > sav->lft_h->addtime) {
4297
			    now - sav->created > sav->lft_h->addtime) {
4298
				key_expire(sav, 1);
4298
				key_sa_chgstate(sav, SADB_SASTATE_DEAD);
4299
				key_sa_chgstate(sav, SADB_SASTATE_DEAD);
4299
				KEY_FREESAV(&sav);
4300
				KEY_FREESAV(&sav);
4300
			}
4301
			}
Lines 4311-4322 Link Here
4311
				 * If there is no SA then sending
4312
				 * If there is no SA then sending
4312
				 * expire message.
4313
				 * expire message.
4313
				 */
4314
				 */
4314
				key_expire(sav);
4315
				key_expire(sav, 0);
4315
			}
4316
			}
4316
#endif
4317
#endif
4317
			/* check HARD lifetime by bytes */
4318
			/* check HARD lifetime by bytes */
4318
			else if (sav->lft_h->bytes != 0 &&
4319
			else if (sav->lft_h->bytes != 0 &&
4319
			    sav->lft_h->bytes < sav->lft_c->bytes) {
4320
			    sav->lft_h->bytes < sav->lft_c->bytes) {
4321
				key_expire(sav, 1);
4320
				key_sa_chgstate(sav, SADB_SASTATE_DEAD);
4322
				key_sa_chgstate(sav, SADB_SASTATE_DEAD);
4321
				KEY_FREESAV(&sav);
4323
				KEY_FREESAV(&sav);
4322
			}
4324
			}
Lines 6721-6727 Link Here
6721
 *	others	: error number
6723
 *	others	: error number
6722
 */
6724
 */
6723
static int
6725
static int
6724
key_expire(struct secasvar *sav)
6726
key_expire(struct secasvar *sav, int hard)
6725
{
6727
{
6726
	int satype;
6728
	int satype;
6727
	struct mbuf *result = NULL, *m;
6729
	struct mbuf *result = NULL, *m;
Lines 6779-6789 Link Here
6779
	lt->sadb_lifetime_usetime = sav->lft_c->usetime;
6781
	lt->sadb_lifetime_usetime = sav->lft_c->usetime;
6780
	lt = (struct sadb_lifetime *)(mtod(m, caddr_t) + len / 2);
6782
	lt = (struct sadb_lifetime *)(mtod(m, caddr_t) + len / 2);
6781
	lt->sadb_lifetime_len = PFKEY_UNIT64(sizeof(struct sadb_lifetime));
6783
	lt->sadb_lifetime_len = PFKEY_UNIT64(sizeof(struct sadb_lifetime));
6782
	lt->sadb_lifetime_exttype = SADB_EXT_LIFETIME_SOFT;
6784
	if (hard) {
6783
	lt->sadb_lifetime_allocations = sav->lft_s->allocations;
6785
		lt->sadb_lifetime_exttype = SADB_EXT_LIFETIME_HARD;
6784
	lt->sadb_lifetime_bytes = sav->lft_s->bytes;
6786
		lt->sadb_lifetime_allocations = sav->lft_h->allocations;
6785
	lt->sadb_lifetime_addtime = sav->lft_s->addtime;
6787
		lt->sadb_lifetime_bytes = sav->lft_h->bytes;
6786
	lt->sadb_lifetime_usetime = sav->lft_s->usetime;
6788
		lt->sadb_lifetime_addtime = sav->lft_h->addtime;
6789
		lt->sadb_lifetime_usetime = sav->lft_h->usetime;
6790
	} else {
6791
		lt->sadb_lifetime_exttype = SADB_EXT_LIFETIME_SOFT;
6792
		lt->sadb_lifetime_allocations = sav->lft_s->allocations;
6793
		lt->sadb_lifetime_bytes = sav->lft_s->bytes;
6794
		lt->sadb_lifetime_addtime = sav->lft_s->addtime;
6795
		lt->sadb_lifetime_usetime = sav->lft_s->usetime;
6796
	}
6787
	m_cat(result, m);
6797
	m_cat(result, m);
6788
6798
6789
	/* set sadb_address for source */
6799
	/* set sadb_address for source */

Return to bug 200282