From patchwork Wed Nov 25 09:59:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Bianconi X-Patchwork-Id: 1405968 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=cdW5daWf; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CgxFv1YCRz9s0b for ; Wed, 25 Nov 2020 21:00:02 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 64BB086B59; Wed, 25 Nov 2020 10:00:00 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iSOn1BdyZTY6; Wed, 25 Nov 2020 09:59:59 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by fraxinus.osuosl.org (Postfix) with ESMTP id B127986B47; Wed, 25 Nov 2020 09:59:59 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 92242C163C; Wed, 25 Nov 2020 09:59:59 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 28DA7C0052 for ; Wed, 25 Nov 2020 09:59:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 102F286B4E for ; Wed, 25 Nov 2020 09:59:58 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4nfmT3mLJyCD for ; Wed, 25 Nov 2020 09:59:57 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 4CE0586B47 for ; Wed, 25 Nov 2020 09:59:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1606298396; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=emFKd+iH92UHJX2z6t1vRSBOZmv9DiJE8o2hoj4AoK8=; b=cdW5daWfoi2OYds1ZJ5ahbr2c4A4l8VMOnhyHKpJekOjsuS5OBIwB9vCzcU9HKp1gezV3z 1lo4KR8dzRe/Ibsm75AnjyT15ahjWgClslm3GeYAE1gmqJ3AaqrfSXYWl+AhPGVDuZt2HS 0kcFZS08+mvGe7arKHQg3SeTMmHPAcc= Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-58-pRc3QRW7ODqZUiFv1gp_6A-1; Wed, 25 Nov 2020 04:59:54 -0500 X-MC-Unique: pRc3QRW7ODqZUiFv1gp_6A-1 Received: by mail-ej1-f70.google.com with SMTP id gr9so633983ejb.19 for ; Wed, 25 Nov 2020 01:59:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=emFKd+iH92UHJX2z6t1vRSBOZmv9DiJE8o2hoj4AoK8=; b=EcyFidLq+8825HawBckjRIhWw4SiEK3MFdhwDuI33LgpyifDjsoxOsGgqeEdd4geem 0j0pqsubLQ4YBmDNk32IxU5EwRuRSmtpBxcG0/Q8N4ul+RkUwH+dIY+DHu7udFUz7nCX 9EGsesy68d9r4YsVQqtew743+TgoS0/Z/hMgZznF1OmLk/N7c8ld/6D3cSFtdk4gfTXd /sI1V9v8Pvr2662e5TslUGqakd/3VUCjGOiqVTw2gHmFreIHCxx90p/qdd2zqHNCDXH9 a8TPL1oG+AzgDSUbUsp9iSCovp+nKNbN24vzQS9srpA3J6qI5nrmwxr31hq3S9ulcKM9 xaFg== X-Gm-Message-State: AOAM531E5Hdb45/n8AhrBrndLg1xy+9Jx20cdtt/lkCOo9GrNHS5StVZ nkbGKfuYeYpRWIrLNHvNWF75BO53XTnBw3qo239XONnFCDuiLTQi2HEgLpx9n4rPB8Z/TclGx6l oH2MocKbGvu0SmaBITVtVsRZlkaHQRKJmHoeRl6PNs2t9luIvzaK7hZyJKTPrxO+YYpgXY6rP5q I= X-Received: by 2002:a17:906:9414:: with SMTP id q20mr2427280ejx.384.1606298392801; Wed, 25 Nov 2020 01:59:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJwe8nFOVJE8ot8f4aURDI1ycARyX51ZxhW650/XxTSi/6oa1cUBbFESI0Mdjaxsk6OYwxdYgg== X-Received: by 2002:a17:906:9414:: with SMTP id q20mr2427255ejx.384.1606298392468; Wed, 25 Nov 2020 01:59:52 -0800 (PST) Received: from lore-desk.redhat.com ([151.66.8.153]) by smtp.gmail.com with ESMTPSA id g13sm936862edy.7.2020.11.25.01.59.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Nov 2020 01:59:52 -0800 (PST) From: Lorenzo Bianconi To: dev@openvswitch.org Date: Wed, 25 Nov 2020 10:59:39 +0100 Message-Id: <4260786c2cb543827d8958a85d82f53b9dfd50d1.1606298055.git.lorenzo.bianconi@redhat.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lorenzo.bianconi@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Cc: trozet@redhat.com Subject: [ovs-dev] [PATCH ovn 2/4] action: introduce handle_bfd_msg() action X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Add handle_bfd_msg action to parse BFD packets received by the controller Signed-off-by: Lorenzo Bianconi --- controller/pinctrl.c | 17 +++++++++++++++++ include/ovn/actions.h | 7 +++++++ lib/actions.c | 16 ++++++++++++++++ tests/ovn.at | 4 ++++ utilities/ovn-trace.c | 2 ++ 5 files changed, 46 insertions(+) diff --git a/controller/pinctrl.c b/controller/pinctrl.c index 0e80c00c1..e7b9e90ce 100644 --- a/controller/pinctrl.c +++ b/controller/pinctrl.c @@ -329,6 +329,10 @@ static void bfd_monitor_init(void); static void bfd_monitor_destroy(void); static void bfd_monitor_send_msg(struct rconn *swconn, long long int *bfd_time) OVS_REQUIRES(pinctrl_mutex); +static void +pinctrl_handle_bfd_msg(struct rconn *swconn, const struct flow *ip_flow, + struct dp_packet *pkt_in, const struct match *md) + OVS_REQUIRES(pinctrl_mutex); static void bfd_monitor_run(const struct sbrec_bfd_table *bfd_table, struct ovsdb_idl_index *sbrec_port_binding_by_name, const struct sbrec_chassis *chassis, @@ -2975,6 +2979,12 @@ process_packet_in(struct rconn *swconn, const struct ofp_header *msg) ovs_mutex_unlock(&pinctrl_mutex); break; + case ACTION_OPCODE_BFD_MSG: + ovs_mutex_lock(&pinctrl_mutex); + pinctrl_handle_bfd_msg(swconn, &headers, &packet, &pin.flow_metadata); + ovs_mutex_unlock(&pinctrl_mutex); + break; + default: VLOG_WARN_RL(&rl, "unrecognized packet-in opcode %"PRIu32, ntohl(ah->opcode)); @@ -6487,6 +6497,13 @@ next: } } +static void +pinctrl_handle_bfd_msg(struct rconn *swconn, const struct flow *ip_flow, + struct dp_packet *pkt_in, const struct match *md) + OVS_REQUIRES(pinctrl_mutex) +{ +} + #define BFD_MONITOR_STALE_TIMEOUT 180000LL static void bfd_monitor_run(const struct sbrec_bfd_table *bfd_table, diff --git a/include/ovn/actions.h b/include/ovn/actions.h index 9c1ebf4aa..d104d4d64 100644 --- a/include/ovn/actions.h +++ b/include/ovn/actions.h @@ -105,6 +105,7 @@ struct ovn_extend_table; OVNACT(CHK_LB_HAIRPIN, ovnact_result) \ OVNACT(CHK_LB_HAIRPIN_REPLY, ovnact_result) \ OVNACT(CT_SNAT_TO_VIP, ovnact_null) \ + OVNACT(BFD_MSG, ovnact_null) \ /* enum ovnact_type, with a member OVNACT_ for each action. */ enum OVS_PACKED_ENUM ovnact_type { @@ -627,6 +628,12 @@ enum action_opcode { * The actions, in OpenFlow 1.3 format, follow the action_header. */ ACTION_OPCODE_REJECT, + + /* handle_bfd_msg { ...actions ...}." + * + * The actions, in OpenFlow 1.3 format, follow the action_header. + */ + ACTION_OPCODE_BFD_MSG, }; /* Header. */ diff --git a/lib/actions.c b/lib/actions.c index 0705e4ef3..8516f5d74 100644 --- a/lib/actions.c +++ b/lib/actions.c @@ -2740,6 +2740,20 @@ encode_DHCP6_REPLY(const struct ovnact_null *a OVS_UNUSED, encode_controller_op(ACTION_OPCODE_DHCP6_SERVER, ofpacts); } +static void +format_BFD_MSG(const struct ovnact_null *a OVS_UNUSED, struct ds *s) +{ + ds_put_cstr(s, "handle_bfd_msg;"); +} + +static void +encode_BFD_MSG(const struct ovnact_null *a OVS_UNUSED, + const struct ovnact_encode_params *ep OVS_UNUSED, + struct ofpbuf *ofpacts) +{ + encode_controller_op(ACTION_OPCODE_BFD_MSG, ofpacts); +} + static void parse_SET_QUEUE(struct action_context *ctx) { @@ -3840,6 +3854,8 @@ parse_action(struct action_context *ctx) parse_fwd_group_action(ctx); } else if (lexer_match_id(ctx->lexer, "handle_dhcpv6_reply")) { ovnact_put_DHCP6_REPLY(ctx->ovnacts); + } else if (lexer_match_id(ctx->lexer, "handle_bfd_msg")) { + ovnact_put_BFD_MSG(ctx->ovnacts); } else if (lexer_match_id(ctx->lexer, "reject")) { parse_REJECT(ctx); } else if (lexer_match_id(ctx->lexer, "ct_snat_to_vip")) { diff --git a/tests/ovn.at b/tests/ovn.at index 5b7a64cde..78a1b6443 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -1807,6 +1807,10 @@ ct_snat_to_vip; ct_snat_to_vip(foo); Syntax error at `(' expecting `;'. +# bfd packets +handle_bfd_msg; + encodes as controller(userdata=00.00.00.17.00.00.00.00) + # Miscellaneous negative tests. ; Syntax error at `;'. diff --git a/utilities/ovn-trace.c b/utilities/ovn-trace.c index 8eb7263b3..6d571476c 100644 --- a/utilities/ovn-trace.c +++ b/utilities/ovn-trace.c @@ -2520,6 +2520,8 @@ trace_actions(const struct ovnact *ovnacts, size_t ovnacts_len, break; case OVNACT_DHCP6_REPLY: break; + case OVNACT_BFD_MSG: + break; } } ds_destroy(&s);