mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-17 17:59:38 +00:00

The matchall classifier matches every packet and allows the user to apply actions on it. In addition, it supports the skip_sw and skip_hw (as can be found on u32 and flower filter) that direct the kernel to skip the software/hardware processing of the actions. This filter is very useful in usecases where every packet should be matched. For example, packet mirroring (SPAN) can be setup very easily using that filter. Signed-off-by: Yotam Gigi <yotamg@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com>
191 lines
4.2 KiB
Makefile
191 lines
4.2 KiB
Makefile
TCOBJ= tc.o tc_qdisc.o tc_class.o tc_filter.o tc_util.o tc_monitor.o \
|
|
tc_exec.o tc_bpf.o m_police.o m_estimator.o m_action.o m_ematch.o \
|
|
emp_ematch.yacc.o emp_ematch.lex.o
|
|
|
|
include ../Config
|
|
|
|
ifeq ($(IP_CONFIG_SETNS),y)
|
|
CFLAGS += -DHAVE_SETNS
|
|
endif
|
|
|
|
SHARED_LIBS ?= y
|
|
|
|
TCMODULES :=
|
|
TCMODULES += q_fifo.o
|
|
TCMODULES += q_sfq.o
|
|
TCMODULES += q_red.o
|
|
TCMODULES += q_prio.o
|
|
TCMODULES += q_tbf.o
|
|
TCMODULES += q_cbq.o
|
|
TCMODULES += q_rr.o
|
|
TCMODULES += q_multiq.o
|
|
TCMODULES += q_netem.o
|
|
TCMODULES += q_choke.o
|
|
TCMODULES += q_sfb.o
|
|
TCMODULES += f_rsvp.o
|
|
TCMODULES += f_u32.o
|
|
TCMODULES += f_route.o
|
|
TCMODULES += f_fw.o
|
|
TCMODULES += f_basic.o
|
|
TCMODULES += f_bpf.o
|
|
TCMODULES += f_flow.o
|
|
TCMODULES += f_cgroup.o
|
|
TCMODULES += f_flower.o
|
|
TCMODULES += q_dsmark.o
|
|
TCMODULES += q_gred.o
|
|
TCMODULES += f_tcindex.o
|
|
TCMODULES += q_ingress.o
|
|
TCMODULES += q_hfsc.o
|
|
TCMODULES += q_htb.o
|
|
TCMODULES += q_drr.o
|
|
TCMODULES += q_qfq.o
|
|
TCMODULES += m_gact.o
|
|
TCMODULES += m_mirred.o
|
|
TCMODULES += m_nat.o
|
|
TCMODULES += m_pedit.o
|
|
TCMODULES += m_ife.o
|
|
TCMODULES += m_skbedit.o
|
|
TCMODULES += m_csum.o
|
|
TCMODULES += m_simple.o
|
|
TCMODULES += m_vlan.o
|
|
TCMODULES += m_connmark.o
|
|
TCMODULES += m_bpf.o
|
|
TCMODULES += p_ip.o
|
|
TCMODULES += p_icmp.o
|
|
TCMODULES += p_tcp.o
|
|
TCMODULES += p_udp.o
|
|
TCMODULES += em_nbyte.o
|
|
TCMODULES += em_cmp.o
|
|
TCMODULES += em_u32.o
|
|
TCMODULES += em_canid.o
|
|
TCMODULES += em_meta.o
|
|
TCMODULES += q_mqprio.o
|
|
TCMODULES += q_codel.o
|
|
TCMODULES += q_fq_codel.o
|
|
TCMODULES += q_fq.o
|
|
TCMODULES += q_pie.o
|
|
TCMODULES += q_hhf.o
|
|
TCMODULES += q_clsact.o
|
|
TCMODULES += e_bpf.o
|
|
TCMODULES += f_matchall.o
|
|
|
|
ifeq ($(TC_CONFIG_IPSET), y)
|
|
ifeq ($(TC_CONFIG_XT), y)
|
|
TCMODULES += em_ipset.o
|
|
endif
|
|
endif
|
|
|
|
TCSO :=
|
|
ifeq ($(TC_CONFIG_ATM),y)
|
|
TCSO += q_atm.so
|
|
endif
|
|
|
|
ifeq ($(TC_CONFIG_XT),y)
|
|
TCSO += m_xt.so
|
|
else
|
|
ifeq ($(TC_CONFIG_XT_OLD),y)
|
|
TCSO += m_xt_old.so
|
|
else
|
|
ifeq ($(TC_CONFIG_XT_OLD_H),y)
|
|
CFLAGS += -DTC_CONFIG_XT_H
|
|
TCSO += m_xt_old.so
|
|
else
|
|
TCMODULES += m_ipt.o
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(TC_CONFIG_ELF),y)
|
|
CFLAGS += -DHAVE_ELF
|
|
LDLIBS += -lelf
|
|
endif
|
|
|
|
TCOBJ += $(TCMODULES)
|
|
LDLIBS += -L. -ltc -lm
|
|
|
|
ifeq ($(SHARED_LIBS),y)
|
|
LDLIBS += -ldl
|
|
LDFLAGS += -Wl,-export-dynamic
|
|
endif
|
|
|
|
TCLIB := tc_core.o
|
|
TCLIB += tc_red.o
|
|
TCLIB += tc_cbq.o
|
|
TCLIB += tc_estimator.o
|
|
TCLIB += tc_stab.o
|
|
|
|
CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PROB
|
|
ifneq ($(IPT_LIB_DIR),)
|
|
CFLAGS += -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\"
|
|
endif
|
|
|
|
YACC := bison
|
|
LEX := flex
|
|
CFLAGS += -DYY_NO_INPUT
|
|
|
|
MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
|
|
|
|
%.so: %.c
|
|
$(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -shared -fpic $< -o $@
|
|
|
|
|
|
all: libtc.a tc $(TCSO)
|
|
|
|
tc: $(TCOBJ) $(TCLIB)
|
|
$(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@
|
|
|
|
libtc.a: $(TCLIB)
|
|
$(QUIET_AR)$(AR) rcs $@ $(TCLIB)
|
|
|
|
install: all
|
|
mkdir -p $(MODDESTDIR)
|
|
install -m 0755 tc $(DESTDIR)$(SBINDIR)
|
|
for i in $(TCSO); \
|
|
do install -m 755 $$i $(MODDESTDIR); \
|
|
done
|
|
if [ ! -f $(MODDESTDIR)/m_ipt.so ]; then \
|
|
if [ -f $(MODDESTDIR)/m_xt.so ]; \
|
|
then ln -s m_xt.so $(MODDESTDIR)/m_ipt.so ; \
|
|
elif [ -f $(MODDESTDIR)/m_xt_old.so ]; \
|
|
then ln -s m_xt_old.so $(MODDESTDIR)/m_ipt.so ; \
|
|
fi; \
|
|
fi
|
|
|
|
clean:
|
|
rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.yacc.h; \
|
|
rm -f emp_ematch.yacc.*
|
|
|
|
q_atm.so: q_atm.c
|
|
$(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm
|
|
|
|
m_xt.so: m_xt.c
|
|
$(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -shared -fpic -o m_xt.so m_xt.c $$($(PKG_CONFIG) xtables --cflags --libs)
|
|
|
|
m_xt_old.so: m_xt_old.c
|
|
$(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -shared -fpic -o m_xt_old.so m_xt_old.c $$($(PKG_CONFIG) xtables --cflags --libs)
|
|
|
|
em_ipset.o: CFLAGS += $$($(PKG_CONFIG) xtables --cflags)
|
|
|
|
%.yacc.c: %.y
|
|
$(QUIET_YACC)$(YACC) $(YACCFLAGS) -o $@ $<
|
|
|
|
%.lex.c: %.l
|
|
$(QUIET_LEX)$(LEX) $(LEXFLAGS) -o$@ $<
|
|
|
|
# our lexer includes the header from yacc, so make sure
|
|
# we don't attempt to compile it before the header has
|
|
# been generated as part of the yacc step.
|
|
emp_ematch.lex.o: emp_ematch.yacc.c
|
|
|
|
ifneq ($(SHARED_LIBS),y)
|
|
|
|
tc: static-syms.o
|
|
static-syms.o: static-syms.h
|
|
static-syms.h: $(wildcard *.c)
|
|
files="$^" ; \
|
|
for s in `grep -B 3 '\<dlsym' $$files | sed -n '/snprintf/{s:.*"\([^"]*\)".*:\1:;s:%s::;p}'` ; do \
|
|
sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \
|
|
done > $@
|
|
|
|
endif
|