summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlijia <[email protected]>2021-11-07 22:00:48 +0800
committerlijia <[email protected]>2021-11-07 22:00:48 +0800
commit5af29da3f810240e584777dced6347c47eb1ead6 (patch)
tree8fc8fdbbaa2b7e814a5222b89cb19dc5570c4686
parentbec6e8ecb579027c11aac9bfb2f70378a79a6a6e (diff)
TSG-8371, 修复不支持多于2层vlan的BUG.v4.2.66
-rw-r--r--include/public/stream_inc/stream_base.h2
-rw-r--r--src/common/stream_addr_inet.c12
2 files changed, 7 insertions, 7 deletions
diff --git a/include/public/stream_inc/stream_base.h b/include/public/stream_inc/stream_base.h
index afca3e7..f7d8dea 100644
--- a/include/public/stream_inc/stream_base.h
+++ b/include/public/stream_inc/stream_base.h
@@ -192,7 +192,7 @@ struct layer_addr_gre
#define VLAN_ID_MASK (0x0FFF)
#define VLAN_TAG_LEN (4)
-#define MAX_VLAN_ADDR_LAYER (2)
+#define MAX_VLAN_ADDR_LAYER (8)
struct single_layer_vlan_addr{ /* refer to https://en.wikipedia.org/wiki/IEEE_802.1Q */
diff --git a/src/common/stream_addr_inet.c b/src/common/stream_addr_inet.c
index 404dcb8..606e3ff 100644
--- a/src/common/stream_addr_inet.c
+++ b/src/common/stream_addr_inet.c
@@ -1346,7 +1346,7 @@ static int __addr_pure_udp_n2p_fun(const struct layer_addr *paddr, char *buf, in
static int __addr_vlan_n2p_fun(const struct layer_addr *paddr, char *buf, int buf_len)
{
const struct layer_addr_vlan *vlan_addr = paddr->vlan;
- const struct mesa_vlan_hdr *vhdr;
+ //const struct mesa_vlan_hdr *vhdr;
int i;
unsigned short vlan_id;
char tmp_buf[32] = {};
@@ -1357,16 +1357,16 @@ static int __addr_vlan_n2p_fun(const struct layer_addr *paddr, char *buf, int bu
for(i = 0; i < max_layer_num; i++){
if(vlan_addr->c2s_layer_num >= i+1){
- vhdr = (struct mesa_vlan_hdr *)&vlan_addr->c2s_addr_array[i];
- vlan_id = ntohs(vhdr->pri_cfi_id) & VLAN_ID_MASK;
+ //vhdr = (struct mesa_vlan_hdr *)&vlan_addr->c2s_addr_array[i];
+ vlan_id = ntohs(vlan_addr->c2s_addr_array[i].VID);
snprintf(tmp_buf, 32, "%d", vlan_id);
strcat(vlan_addr_string, tmp_buf);
}else{
- strcat(vlan_addr_string, "N/A");
+ strcat(vlan_addr_string, "N/A-");
}
if(vlan_addr->s2c_layer_num >= i+1){
- vhdr = (struct mesa_vlan_hdr *)&vlan_addr->s2c_addr_array[i];
- vlan_id = ntohs(vhdr->pri_cfi_id) & VLAN_ID_MASK;
+ //vhdr = (struct mesa_vlan_hdr *)&vlan_addr->s2c_addr_array[i];
+ vlan_id = ntohs(vlan_addr->s2c_addr_array[i].VID);
snprintf(tmp_buf, 32, "%d", vlan_id);
strcat(vlan_addr_string, tmp_buf);
}else{