mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 22:57:45 +00:00
zebra: Add ability for dataplane code to understand rule ip protocols
The zebra dplane needs to be taught about the rule ip_proto that can be installed. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
8096bd72aa
commit
8ccbc778cf
@ -171,7 +171,8 @@ static ssize_t netlink_rule_msg_encoder(struct zebra_dplane_ctx *ctx, void *buf,
|
|||||||
dplane_ctx_rule_get_table(ctx), dplane_ctx_rule_get_src_ip(ctx),
|
dplane_ctx_rule_get_table(ctx), dplane_ctx_rule_get_src_ip(ctx),
|
||||||
dplane_ctx_rule_get_dst_ip(ctx),
|
dplane_ctx_rule_get_dst_ip(ctx),
|
||||||
dplane_ctx_rule_get_fwmark(ctx),
|
dplane_ctx_rule_get_fwmark(ctx),
|
||||||
dplane_ctx_rule_get_dsfield(ctx), 0, buf, buflen);
|
dplane_ctx_rule_get_dsfield(ctx),
|
||||||
|
dplane_ctx_rule_get_ipproto(ctx), buf, buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t netlink_oldrule_msg_encoder(struct zebra_dplane_ctx *ctx,
|
static ssize_t netlink_oldrule_msg_encoder(struct zebra_dplane_ctx *ctx,
|
||||||
@ -184,7 +185,8 @@ static ssize_t netlink_oldrule_msg_encoder(struct zebra_dplane_ctx *ctx,
|
|||||||
dplane_ctx_rule_get_old_src_ip(ctx),
|
dplane_ctx_rule_get_old_src_ip(ctx),
|
||||||
dplane_ctx_rule_get_old_dst_ip(ctx),
|
dplane_ctx_rule_get_old_dst_ip(ctx),
|
||||||
dplane_ctx_rule_get_old_fwmark(ctx),
|
dplane_ctx_rule_get_old_fwmark(ctx),
|
||||||
dplane_ctx_rule_get_old_dsfield(ctx), 0, buf, buflen);
|
dplane_ctx_rule_get_old_dsfield(ctx),
|
||||||
|
dplane_ctx_rule_get_old_ipproto(ctx), buf, buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Public functions */
|
/* Public functions */
|
||||||
|
@ -259,6 +259,7 @@ struct dplane_ctx_rule {
|
|||||||
uint8_t dsfield;
|
uint8_t dsfield;
|
||||||
struct prefix src_ip;
|
struct prefix src_ip;
|
||||||
struct prefix dst_ip;
|
struct prefix dst_ip;
|
||||||
|
uint8_t ip_proto;
|
||||||
char ifname[INTERFACE_NAMSIZ + 1];
|
char ifname[INTERFACE_NAMSIZ + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1929,6 +1930,20 @@ uint32_t dplane_ctx_rule_get_old_fwmark(const struct zebra_dplane_ctx *ctx)
|
|||||||
return ctx->u.rule.old.fwmark;
|
return ctx->u.rule.old.fwmark;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t dplane_ctx_rule_get_ipproto(const struct zebra_dplane_ctx *ctx)
|
||||||
|
{
|
||||||
|
DPLANE_CTX_VALID(ctx);
|
||||||
|
|
||||||
|
return ctx->u.rule.new.ip_proto;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t dplane_ctx_rule_get_old_ipproto(const struct zebra_dplane_ctx *ctx)
|
||||||
|
{
|
||||||
|
DPLANE_CTX_VALID(ctx);
|
||||||
|
|
||||||
|
return ctx->u.rule.old.ip_proto;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t dplane_ctx_rule_get_dsfield(const struct zebra_dplane_ctx *ctx)
|
uint8_t dplane_ctx_rule_get_dsfield(const struct zebra_dplane_ctx *ctx)
|
||||||
{
|
{
|
||||||
DPLANE_CTX_VALID(ctx);
|
DPLANE_CTX_VALID(ctx);
|
||||||
@ -2636,6 +2651,7 @@ static void dplane_ctx_rule_init_single(struct dplane_ctx_rule *dplane_rule,
|
|||||||
dplane_rule->filter_bm = rule->rule.filter.filter_bm;
|
dplane_rule->filter_bm = rule->rule.filter.filter_bm;
|
||||||
dplane_rule->fwmark = rule->rule.filter.fwmark;
|
dplane_rule->fwmark = rule->rule.filter.fwmark;
|
||||||
dplane_rule->dsfield = rule->rule.filter.dsfield;
|
dplane_rule->dsfield = rule->rule.filter.dsfield;
|
||||||
|
dplane_rule->ip_proto = rule->rule.filter.ip_proto;
|
||||||
prefix_copy(&(dplane_rule->dst_ip), &rule->rule.filter.dst_ip);
|
prefix_copy(&(dplane_rule->dst_ip), &rule->rule.filter.dst_ip);
|
||||||
prefix_copy(&(dplane_rule->src_ip), &rule->rule.filter.src_ip);
|
prefix_copy(&(dplane_rule->src_ip), &rule->rule.filter.src_ip);
|
||||||
strlcpy(dplane_rule->ifname, rule->ifname, INTERFACE_NAMSIZ);
|
strlcpy(dplane_rule->ifname, rule->ifname, INTERFACE_NAMSIZ);
|
||||||
|
@ -493,6 +493,8 @@ uint32_t dplane_ctx_rule_get_fwmark(const struct zebra_dplane_ctx *ctx);
|
|||||||
uint32_t dplane_ctx_rule_get_old_fwmark(const struct zebra_dplane_ctx *ctx);
|
uint32_t dplane_ctx_rule_get_old_fwmark(const struct zebra_dplane_ctx *ctx);
|
||||||
uint8_t dplane_ctx_rule_get_dsfield(const struct zebra_dplane_ctx *ctx);
|
uint8_t dplane_ctx_rule_get_dsfield(const struct zebra_dplane_ctx *ctx);
|
||||||
uint8_t dplane_ctx_rule_get_old_dsfield(const struct zebra_dplane_ctx *ctx);
|
uint8_t dplane_ctx_rule_get_old_dsfield(const struct zebra_dplane_ctx *ctx);
|
||||||
|
uint8_t dplane_ctx_rule_get_ipproto(const struct zebra_dplane_ctx *ctx);
|
||||||
|
uint8_t dplane_ctx_rule_get_old_ipproto(const struct zebra_dplane_ctx *ctx);
|
||||||
const struct prefix *
|
const struct prefix *
|
||||||
dplane_ctx_rule_get_src_ip(const struct zebra_dplane_ctx *ctx);
|
dplane_ctx_rule_get_src_ip(const struct zebra_dplane_ctx *ctx);
|
||||||
const struct prefix *
|
const struct prefix *
|
||||||
|
Loading…
Reference in New Issue
Block a user