Add the 'drop tagged' flag support for ethernet switch ports.

This is intended to drop all 802.1q tagged packets on a port.

Sponsored by:	 Rubicon Communications, LLC (Netgate)
This commit is contained in:
Luiz Otavio O Souza 2019-06-28 22:12:43 +00:00
parent 2d7a555294
commit 4e4cedb00b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=349520
3 changed files with 12 additions and 2 deletions

View file

@ -24,7 +24,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 2, 2016 .Dd June 28, 2019
.Dt ETHERSWITCHCFG 8 .Dt ETHERSWITCHCFG 8
.Os .Os
.Sh NAME .Sh NAME
@ -147,6 +147,10 @@ MAC addresses.
Disable the first lock option. Disable the first lock option.
Note that sometimes you need to reset the Note that sometimes you need to reset the
switch to really disable this option. switch to really disable this option.
.It Cm droptagged
Drop packets with a VLAN tag.
.It Fl droptagged
Disable the drop tagged packets option.
.It Cm dropuntagged .It Cm dropuntagged
Drop packets without a VLAN tag. Drop packets without a VLAN tag.
.It Fl dropuntagged .It Fl dropuntagged

View file

@ -215,6 +215,8 @@ set_port_flag(struct cfg *cfg, int argc, char *argv[])
f = ETHERSWITCH_PORT_ADDTAG; f = ETHERSWITCH_PORT_ADDTAG;
else if (strcasecmp(flag, "firstlock") == 0) else if (strcasecmp(flag, "firstlock") == 0)
f = ETHERSWITCH_PORT_FIRSTLOCK; f = ETHERSWITCH_PORT_FIRSTLOCK;
else if (strcasecmp(flag, "droptagged") == 0)
f = ETHERSWITCH_PORT_DROPTAGGED;
else if (strcasecmp(flag, "dropuntagged") == 0) else if (strcasecmp(flag, "dropuntagged") == 0)
f = ETHERSWITCH_PORT_DROPUNTAGGED; f = ETHERSWITCH_PORT_DROPUNTAGGED;
else if (strcasecmp(flag, "doubletag") == 0) else if (strcasecmp(flag, "doubletag") == 0)
@ -871,6 +873,8 @@ static struct cmds cmds[] = {
{ MODE_PORT, "-doubletag", 0, set_port_flag }, { MODE_PORT, "-doubletag", 0, set_port_flag },
{ MODE_PORT, "firstlock", 0, set_port_flag }, { MODE_PORT, "firstlock", 0, set_port_flag },
{ MODE_PORT, "-firstlock", 0, set_port_flag }, { MODE_PORT, "-firstlock", 0, set_port_flag },
{ MODE_PORT, "droptagged", 0, set_port_flag },
{ MODE_PORT, "-droptagged", 0, set_port_flag },
{ MODE_PORT, "dropuntagged", 0, set_port_flag }, { MODE_PORT, "dropuntagged", 0, set_port_flag },
{ MODE_PORT, "-dropuntagged", 0, set_port_flag }, { MODE_PORT, "-dropuntagged", 0, set_port_flag },
{ MODE_CONFIG, "vlan_mode", 1, set_vlan_mode }, { MODE_CONFIG, "vlan_mode", 1, set_vlan_mode },

View file

@ -64,8 +64,10 @@ typedef struct etherswitch_conf etherswitch_conf_t;
#define ETHERSWITCH_PORT_DROPUNTAGGED (1 << 4) #define ETHERSWITCH_PORT_DROPUNTAGGED (1 << 4)
#define ETHERSWITCH_PORT_DOUBLE_TAG (1 << 5) #define ETHERSWITCH_PORT_DOUBLE_TAG (1 << 5)
#define ETHERSWITCH_PORT_INGRESS (1 << 6) #define ETHERSWITCH_PORT_INGRESS (1 << 6)
#define ETHERSWITCH_PORT_DROPTAGGED (1 << 7)
#define ETHERSWITCH_PORT_FLAGS_BITS \ #define ETHERSWITCH_PORT_FLAGS_BITS \
"\020\1CPUPORT\2STRIPTAG\3ADDTAG\4FIRSTLOCK\5DROPUNTAGGED\6QinQ\7INGRESS" "\020\1CPUPORT\2STRIPTAG\3ADDTAG\4FIRSTLOCK\5DROPUNTAGGED\6QinQ\7INGRESS" \
"\10DROPTAGGED"
#define ETHERSWITCH_PORT_MAX_LEDS 3 #define ETHERSWITCH_PORT_MAX_LEDS 3