--- bgpd/session.c.orig 2006-02-08 14:36:29.000000000 +0200 +++ bgpd/session.c 2007-05-09 11:04:32.000000000 +0300 @@ -211,12 +211,20 @@ setproctitle("session engine"); bgpd_process = PROC_SE; +/* NetBSD doesn't have PF_KEY implemented in a way OpenBSD has */ +#ifndef __NetBSD__ if (pfkey_init(&sysdep) == -1) fatalx("pfkey setup failed"); +#endif if (setgroups(1, &pw->pw_gid) || +#if defined(__NetBSD__) + setregid(pw->pw_gid, pw->pw_gid) || + setreuid(pw->pw_uid, pw->pw_uid)) +#else setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) || setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid)) +#endif fatal("can't drop privileges"); listener_cnt = 0; @@ -502,7 +510,9 @@ while ((p = peers) != NULL) { peers = p->next; bgp_fsm(p, EVNT_STOP); +#ifndef __NetBSD__ pfkey_remove(p); +#endif free(p); } @@ -583,7 +593,7 @@ /* init write buffer */ msgbuf_init(&peer->wbuf); - +#ifndef __NetBSD__ /* init pfkey - remove old if any, load new ones */ pfkey_remove(peer); if (pfkey_establish(peer) == -1) { @@ -591,7 +601,7 @@ "pfkey setup failed"); return; } - +#endif peer->stats.last_sent_errcode = 0; peer->stats.last_sent_suberr = 0;