All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Ahmed Amamou <ahmed@gandi.net>, netdev@vger.kernel.org
Cc: william@gandi.net, f.cachereul@alphalink.fr,
	Kamel Haddadou <kamel@gandi.net>
Subject: Re: [RFC PATCH 22/24] net: rbridge: Add rbr_fwd
Date: Thu, 25 Sep 2014 15:43:14 +0400	[thread overview]
Message-ID: <5423FFD2.103@cogentembedded.com> (raw)
In-Reply-To: <1411573940-14079-23-git-send-email-ahmed@gandi.net>

On 9/24/2014 7:52 PM, Ahmed Amamou wrote:

> add rbridge forward function
> packets arriving to rbr_fwd should be already encapsulated and correct egress
> and ingress nickname should be already assigned
> rbr_fwd function will assign correct source and destination outer MAC addresses
> according to which port will send the frame and next hop to reach
> the engress nickname
> Nexthope to reach the egress will be found in node database

> Signed-off-by: Ahmed Amamou <ahmed@gandi.net>
> Signed-off-by: Kamel Haddadou <kamel@gandi.net>
> Signed-off-by: William Dauchy <william@gandi.net>
> Signed-off-by: François Cachereul <f.cachereul@alphalink.fr>
> ---
>   net/bridge/rbridge/rbr.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++--
>   1 file changed, 47 insertions(+), 2 deletions(-)

> diff --git a/net/bridge/rbridge/rbr.c b/net/bridge/rbridge/rbr.c
> index 8aa5182..39aa816c 100644
> --- a/net/bridge/rbridge/rbr.c
> +++ b/net/bridge/rbridge/rbr.c
> @@ -177,6 +177,51 @@ static bool add_header(struct sk_buff *skb, uint16_t ingressnick,
>   	return 0;
>   }
>
> +static void rbr_fwd(struct net_bridge_port *p, struct sk_buff *skb,
> +		    uint16_t adj_nick, u16 vid)
> +{
> +	struct rbr_node *adj;
> +	struct trill_hdr *trh;
> +	struct ethhdr *outerethhdr;
> +	struct net *net = dev_net(p->br->dev);
> +	struct net_device *outdev;
> +
> +	adj = rbr_find_node(p->br->rbr, adj_nick);
> +    outdev = __dev_get_by_index(net, adj->rbr_ni->linkid);

    Indent with a tab please.

> +	if (!outdev) {
> +		pr_warn_ratelimited("rbr_fwd: cannot find source port device for forwrding\n");
> +		goto dest_fwd_fail;
> +    }
> +	if (unlikely(adj == NULL)) {
> +		pr_warn_ratelimited
> +		    ("rbr_fwd: unable to find adjacent RBridge\n");
> +		goto dest_fwd_fail;
> +	}
> +
> +	trh = (struct trill_hdr *)skb->data;
> +	trillhdr_dec_hopcount(trh);
> +	outerethhdr = eth_hdr(skb);
> +
> +	/* change outer ether header */
> +	/* bridge become the source_port address in outeretherhdr */

    Becomes?

> +	memcpy(outerethhdr->h_source, p->br->dev->dev_addr, ETH_ALEN);
> +	/* dist port become dest address in outeretherhdr */
> +	memcpy(outerethhdr->h_dest, adj->rbr_ni->adjsnpa, ETH_ALEN);
> +	rbr_node_put(adj);
> +	/* set Bridge as source device */
> +	skb->dev = p->br->dev;
> +	br_forward(br_port_get_rcu(outdev), skb, NULL);
> +
> +	return;
> +
> + dest_fwd_fail:
> +	if (likely(p && p->br))
> +		p->br->dev->stats.tx_dropped++;
> +	kfree_skb(skb);
> +	return;
> +}
> +
> +

    One empty line is enough.

>   static void rbr_encaps(struct sk_buff *skb, uint16_t egressnick, u16 vid)
>   {
>   	uint16_t local_nick;
[...]

WBR, Sergei

  reply	other threads:[~2014-09-25 11:43 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-24 15:51 [RFC PATCH 00/24] TRILL implementation Ahmed Amamou
2014-09-24 15:51 ` [RFC PATCH 01/24] net: rbridge: add trill frame description Ahmed Amamou
2014-09-24 16:38   ` Stephen Hemminger
2014-09-24 16:48     ` William Dauchy
2014-09-24 17:26       ` Cong Wang
2014-09-24 17:34         ` William Dauchy
2014-09-24 17:01   ` Cong Wang
2014-09-24 15:51 ` [RFC PATCH 02/24] net: rbridge: Add layer 2 IS-IS Ethertype Ahmed Amamou
2014-09-24 15:51 ` [RFC PATCH 03/24] net: rbridge: Add RBridge structure Ahmed Amamou
2014-09-24 16:40   ` Stephen Hemminger
2014-09-24 16:55     ` William Dauchy
2014-09-24 17:18   ` Cong Wang
2014-09-24 15:52 ` [RFC PATCH 04/24] net: rbridge: Add CONFIG_TRILL Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 05/24] net: rbridge: Adapt Bridge structure Ahmed Amamou
2014-09-24 20:56   ` Francois Romieu
2014-09-24 15:52 ` [RFC PATCH 06/24] net: rbridge: Enable/disable TRILL capability Ahmed Amamou
2014-09-24 17:46   ` Vlad Yasevich
2014-09-24 15:52 ` [RFC PATCH 07/24] net: rbridge: Add sysfs for trill_state Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 08/24] net: rbridge: Add Rbridge netlink message skeleton Ahmed Amamou
2014-09-24 17:52   ` Vlad Yasevich
2014-09-24 15:52 ` [RFC PATCH 09/24] net: rbridge: Get Rbridge nickname from daemon Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 10/24] net: rbridge: Add elected dtroot Ahmed Amamou
2014-09-25 11:30   ` Sergei Shtylyov
2014-09-24 15:52 ` [RFC PATCH 11/24] net: rbridge: Add rbr_node management function Ahmed Amamou
2014-09-25 11:24   ` Sergei Shtylyov
2014-09-24 15:52 ` [RFC PATCH 12/24] net: rbridge: Clean up rbr_node on rbridge stop Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 13/24] net: rbridge: Add set_node function Ahmed Amamou
2014-09-25 11:34   ` Sergei Shtylyov
2014-09-24 15:52 ` [RFC PATCH 14/24] net: rbridge: Add get_node function Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 15/24] net: rbridge: Add basic trill frame handling function Ahmed Amamou
2014-09-24 19:23   ` Francois Romieu
2014-09-24 15:52 ` [RFC PATCH 16/24] net: rbridge: Update forwarding database Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 17/24] net: rbridge: Add test on trill flag before flood Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 18/24] net: rbridge: Add encapsulation process Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 19/24] net: rbridge: Add receive function Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 20/24] net: rbridge: Add multicast recv handling Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 21/24] net: rbridge: Add decapsulation function Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 22/24] net: rbridge: Add rbr_fwd Ahmed Amamou
2014-09-25 11:43   ` Sergei Shtylyov [this message]
2014-09-24 15:52 ` [RFC PATCH 23/24] net: rbridge: Add rbr_multidest_fwd Ahmed Amamou
2014-09-24 15:52 ` [RFC PATCH 24/24] net: rbridge: replace net_port rx_handler Ahmed Amamou
2014-09-24 16:44 ` [RFC PATCH 00/24] TRILL implementation Stephen Hemminger
2014-09-24 16:54   ` William Dauchy
2014-09-24 17:24     ` Cong Wang
2014-09-24 17:33       ` William Dauchy
2014-09-24 20:57     ` Francois Romieu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5423FFD2.103@cogentembedded.com \
    --to=sergei.shtylyov@cogentembedded.com \
    --cc=ahmed@gandi.net \
    --cc=f.cachereul@alphalink.fr \
    --cc=kamel@gandi.net \
    --cc=netdev@vger.kernel.org \
    --cc=william@gandi.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.