mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-01 06:39:05 +00:00

So far the mirred action has dealt with syntax that handles mirror/redirection for netdev. A matching packet is redirected or mirrored to a target netdev. In this patch we enable mirred to mirror to a tc block as well. IOW, the new syntax looks as follows: ... mirred <ingress | egress> <mirror | redirect> [index INDEX] < <blockid BLOCKID> | <dev <devname>> > Examples of mirroring or redirecting to a tc block: $ tc filter add block 22 protocol ip pref 25 \ flower dst_ip 192.168.0.0/16 action mirred egress mirror blockid 22 $ tc filter add block 22 protocol ip pref 25 \ flower dst_ip 10.10.10.10/32 action mirred egress redirect blockid 22 Co-developed-by: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com> Co-developed-by: Pedro Tammela <pctammela@mojatatu.com> Signed-off-by: Pedro Tammela <pctammela@mojatatu.com> Signed-off-by: Victor Nogueira <victor@mojatatu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
30 lines
749 B
C
30 lines
749 B
C
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
#ifndef __LINUX_TC_MIR_H
|
|
#define __LINUX_TC_MIR_H
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/pkt_cls.h>
|
|
|
|
#define TCA_EGRESS_REDIR 1 /* packet redirect to EGRESS*/
|
|
#define TCA_EGRESS_MIRROR 2 /* mirror packet to EGRESS */
|
|
#define TCA_INGRESS_REDIR 3 /* packet redirect to INGRESS*/
|
|
#define TCA_INGRESS_MIRROR 4 /* mirror packet to INGRESS */
|
|
|
|
struct tc_mirred {
|
|
tc_gen;
|
|
int eaction; /* one of IN/EGRESS_MIRROR/REDIR */
|
|
__u32 ifindex; /* ifindex of egress port */
|
|
};
|
|
|
|
enum {
|
|
TCA_MIRRED_UNSPEC,
|
|
TCA_MIRRED_TM,
|
|
TCA_MIRRED_PARMS,
|
|
TCA_MIRRED_PAD,
|
|
TCA_MIRRED_BLOCKID,
|
|
__TCA_MIRRED_MAX
|
|
};
|
|
#define TCA_MIRRED_MAX (__TCA_MIRRED_MAX - 1)
|
|
|
|
#endif
|