From patchwork Mon Jan 11 15:24:04 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Badea X-Patchwork-Id: 42628 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 74F5EB7C14 for ; Tue, 12 Jan 2010 02:24:15 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752638Ab0AKPYK (ORCPT ); Mon, 11 Jan 2010 10:24:10 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752264Ab0AKPYK (ORCPT ); Mon, 11 Jan 2010 10:24:10 -0500 Received: from ixro-out-rtc.ixiacom.com ([92.87.192.98]:17167 "EHLO ixro-ex1.ixiacom.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752071Ab0AKPYJ (ORCPT ); Mon, 11 Jan 2010 10:24:09 -0500 Received: from localhost.localdomain ([10.205.20.102]) by ixro-ex1.ixiacom.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 11 Jan 2010 17:24:07 +0200 From: Alex Badea To: shemminger@vyatta.com Cc: netdev@vger.kernel.org, Alex Badea Subject: [PATCH iproute2] ip xfrm policy: allow different tmpl family Date: Mon, 11 Jan 2010 17:24:04 +0200 Message-Id: <1263223444-14092-1-git-send-email-abadea@ixiacom.com> X-Mailer: git-send-email 1.6.3.3 X-OriginalArrivalTime: 11 Jan 2010 15:24:07.0345 (UTC) FILETIME=[1DC0EA10:01CA92D2] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Allow tmpl IP addresses to have a different family than selector addresses. This is useful in conjunction with XFRM_STATE_AF_UNSPEC. Signed-off-by: Alex Badea --- Rather than resetting preferred_family unconditionally, we could have a new optional keyword for TMPL, e.g. "ip xfrm policy add ... tmpl unspec mode tunnel ...". Let me know if that would be preferred. ip/xfrm_policy.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ip/xfrm_policy.c b/ip/xfrm_policy.c index 11116e5..2788477 100644 --- a/ip/xfrm_policy.c +++ b/ip/xfrm_policy.c @@ -201,10 +201,10 @@ static int xfrm_tmpl_parse(struct xfrm_user_tmpl *tmpl, break; } idp = *argv; + preferred_family = AF_UNSPEC; xfrm_id_parse(&tmpl->saddr, &tmpl->id, &tmpl->family, 0, &argc, &argv); - if (preferred_family == AF_UNSPEC) - preferred_family = tmpl->family; + preferred_family = tmpl->family; } if (!NEXT_ARG_OK())