Skip to content

Commit

Permalink
vxlan: Expose helper vxlan_build_gbp_hdr
Browse files Browse the repository at this point in the history
The function vxlan_build_gbp_hdr will be used by other modules to build
gbp option in vxlan header according to gbp flags.

Signed-off-by: Gavin Li <gavinl@nvidia.com>
Reviewed-by: Gavi Teitz <gavi@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Maor Dickman <maord@nvidia.com>
Acked-by: Saeed Mahameed <saeedm@nvidia.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Gavin Li authored and Jakub Kicinski committed Mar 18, 2023
1 parent df5e87f commit c641e92
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 19 deletions.
19 changes: 0 additions & 19 deletions drivers/net/vxlan/vxlan_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2093,25 +2093,6 @@ static bool route_shortcircuit(struct net_device *dev, struct sk_buff *skb)
return false;
}

static void vxlan_build_gbp_hdr(struct vxlanhdr *vxh, struct vxlan_metadata *md)
{
struct vxlanhdr_gbp *gbp;

if (!md->gbp)
return;

gbp = (struct vxlanhdr_gbp *)vxh;
vxh->vx_flags |= VXLAN_HF_GBP;

if (md->gbp & VXLAN_GBP_DONT_LEARN)
gbp->dont_learn = 1;

if (md->gbp & VXLAN_GBP_POLICY_APPLIED)
gbp->policy_applied = 1;

gbp->policy_id = htons(md->gbp & VXLAN_GBP_ID_MASK);
}

static int vxlan_build_gpe_hdr(struct vxlanhdr *vxh, __be16 protocol)
{
struct vxlanhdr_gpe *gpe = (struct vxlanhdr_gpe *)vxh;
Expand Down
19 changes: 19 additions & 0 deletions include/net/vxlan.h
Original file line number Diff line number Diff line change
Expand Up @@ -572,4 +572,23 @@ static inline bool vxlan_fdb_nh_path_select(struct nexthop *nh,
return true;
}

static inline void vxlan_build_gbp_hdr(struct vxlanhdr *vxh, const struct vxlan_metadata *md)
{
struct vxlanhdr_gbp *gbp;

if (!md->gbp)
return;

gbp = (struct vxlanhdr_gbp *)vxh;
vxh->vx_flags |= VXLAN_HF_GBP;

if (md->gbp & VXLAN_GBP_DONT_LEARN)
gbp->dont_learn = 1;

if (md->gbp & VXLAN_GBP_POLICY_APPLIED)
gbp->policy_applied = 1;

gbp->policy_id = htons(md->gbp & VXLAN_GBP_ID_MASK);
}

#endif

0 comments on commit c641e92

Please sign in to comment.