summaryrefslogtreecommitdiff
path: root/tunnat
diff options
context:
space:
mode:
authorluqiuwen <[email protected]>2018-12-09 15:01:36 +0600
committerluqiuwen <[email protected]>2018-12-09 15:01:36 +0600
commite7134e0657eb5a6b20d405ae6f80bb46473bbed3 (patch)
treee4323f7b6b62b825189d0f790694ff0e46d8fbac /tunnat
parent84d12d749ff1f594e080ba03244d8fcfb5cc6374 (diff)
增加从VXLAN头部获取LINK-ID的功能v4.3.1-20181209
Diffstat (limited to 'tunnat')
-rw-r--r--tunnat/include/tunnel.h6
-rw-r--r--tunnat/src/runtime.cc1
2 files changed, 5 insertions, 2 deletions
diff --git a/tunnat/include/tunnel.h b/tunnat/include/tunnel.h
index 221eb9d..06b4554 100644
--- a/tunnat/include/tunnel.h
+++ b/tunnat/include/tunnel.h
@@ -41,13 +41,15 @@ struct AddressInfo
{
struct ipv4_addr_t ipv4_addr;
struct ipv6_addr_t ipv6_addr;
- }addr;
+ } addr;
uint16_t s_port;
uint16_t d_port;
uint32_t vpn_id;
+ uint32_t link_id;
};
+
/* 隧道格式类型 */
enum tunnel_type
{
@@ -129,7 +131,6 @@ protected:
struct ipv4_hdr ipv4_hdr_;
struct udp_hdr udp_hdr_;
struct g_vxlan_hdr vxlan_hdr_;
-
struct ipv4_addr_t ipv4_addr_;
public:
@@ -144,6 +145,7 @@ public:
addr_info.s_port = udp_hdr_.src_port;
addr_info.d_port = udp_hdr_.dst_port;
addr_info.vpn_id = (vxlan_hdr_.vlan_id_half_low & 0xf) | (vxlan_hdr_.vlan_id_half_high & 0xff) << 4;
+ addr_info.link_id = vxlan_hdr_.link_id;
return 0;
}
diff --git a/tunnat/src/runtime.cc b/tunnat/src/runtime.cc
index f2ce931..ca1f5bf 100644
--- a/tunnat/src/runtime.cc
+++ b/tunnat/src/runtime.cc
@@ -134,6 +134,7 @@ static int __phy_to_virt_pkt_modify(TunnatInstance * instance, TunnatThreadInsta
ctrlzone->g_device_in_addr = outer_tunnel_addrinfo.addr.ipv4_addr.src_in_addr.s_addr;
ctrlzone->l4_src_port = outer_tunnel_addrinfo.s_port;
ctrlzone->g_device_vpn_id = outer_tunnel_addrinfo.vpn_id;
+ ctrlzone->g_device_linkpair = outer_tunnel_addrinfo.link_id;
}
ctrlzone->__encap_type = outer_tunnel.ThisTunType();