--- embedaddon/ipsec-tools/src/racoon/isakmp_inf.c 2012/02/21 22:39:10 1.1.1.1 +++ embedaddon/ipsec-tools/src/racoon/isakmp_inf.c 2014/06/15 16:37:12 1.1.1.2 @@ -1,4 +1,4 @@ -/* $NetBSD: isakmp_inf.c,v 1.47 2011/03/15 13:20:14 vanhu Exp $ */ +/* $NetBSD: isakmp_inf.c,v 1.47.2.1 2012/08/29 12:01:56 tteras Exp $ */ /* Id: isakmp_inf.c,v 1.44 2006/05/06 20:45:52 manubsd Exp */ @@ -1465,8 +1465,11 @@ isakmp_info_recv_r_u_ack (iph1, ru, msgid) return 0; } - if (memcmp(ru->i_ck, iph1->index.i_ck, sizeof(cookie_t)) || - memcmp(ru->r_ck, iph1->index.r_ck, sizeof(cookie_t))) { + /* accept cookies in original or reversed order */ + if ((memcmp(ru->i_ck, iph1->index.i_ck, sizeof(cookie_t)) || + memcmp(ru->r_ck, iph1->index.r_ck, sizeof(cookie_t))) && + (memcmp(ru->r_ck, iph1->index.i_ck, sizeof(cookie_t)) || + memcmp(ru->i_ck, iph1->index.r_ck, sizeof(cookie_t)))) { plog(LLV_ERROR, LOCATION, iph1->remote, "Cookie mismatch in DPD ACK!.\n"); return 0; @@ -1477,7 +1480,7 @@ isakmp_info_recv_r_u_ack (iph1, ru, msgid) sched_cancel(&iph1->dpd_r_u); isakmp_sched_r_u(iph1, 0); - plog(LLV_DEBUG, LOCATION, NULL, "received an R-U-THERE-ACK\n"); + plog(LLV_DEBUG, LOCATION, iph1->remote, "received an R-U-THERE-ACK\n"); return 0; }