summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQiuwen Lu <[email protected]>2017-06-29 13:28:23 +0800
committerQiuwen Lu <[email protected]>2017-06-29 13:28:23 +0800
commit2739172656216bca077605d29155181fa95628ef (patch)
treef32b830956d182387236f7afca775eb3dac63800
parent9748c7cd41dd4b92a100a2a1b257005da854fdbb (diff)
TUNNAT:调整外层UDP端口的生成规则,不颠倒外层UDP端口。v4.2.2-20170629
-rw-r--r--app/src/mrb.c2
-rw-r--r--tunnat/include/tunnat.h8
-rw-r--r--tunnat/include/tunnel.h7
-rw-r--r--tunnat/src/runtime.cc8
-rw-r--r--tunnat/src/tunnel.cc12
5 files changed, 19 insertions, 18 deletions
diff --git a/app/src/mrb.c b/app/src/mrb.c
index a48a794..edf18f1 100644
--- a/app/src/mrb.c
+++ b/app/src/mrb.c
@@ -243,6 +243,6 @@ uint32_t marsio_get_pkt_type(marsio_buff_t *m)
}
void marsio_pktmbuf_dump(FILE *f, const marsio_buff_t *m, unsigned dump_len)
-{
+{
rte_pktmbuf_dump(f, (const struct rte_mbuf *)m, dump_len);
} \ No newline at end of file
diff --git a/tunnat/include/tunnat.h b/tunnat/include/tunnat.h
index 07be3d1..172785f 100644
--- a/tunnat/include/tunnat.h
+++ b/tunnat/include/tunnat.h
@@ -85,9 +85,11 @@ public:
TUNNAT_STAT_INNER_HDLC_INPUT,
TUNNAT_STAT_INNER_PPP_INPUT,
/* 统计,输出请求类型 */
+ TUNNAT_STAT_FORWARD_OUTPUT,
+ TUNNAT_STAT_ENCAP_OUTPUT,
+ TUNNAT_STAT_DROP_OUTPUT,
TUNNAT_STAT_FORWARD_RAW_OUTPUT,
TUNNAT_STAT_FORWARD_TUNNEL_OUTPUT,
- TUNNAT_STAT_ENCAP_OUTPUT,
/* 统计,会话表表项计数 */
TUNNAT_STAT_SESSION_ADD,
TUNNAT_STAT_SESSION_REMOVE,
@@ -154,9 +156,11 @@ public:
[TUNNAT_STAT_INNER_ETHER_INPUT] = "TUNNAT_STAT_INNER_ETHER_INPUT",
[TUNNAT_STAT_INNER_HDLC_INPUT] = "TUNNAT_STAT_INNER_HDLC_INPUT",
[TUNNAT_STAT_INNER_PPP_INPUT] = "TUNNAT_STAT_INNER_PPP_INPUT",
+ [TUNNAT_STAT_FORWARD_OUTPUT] = "TUNNAT_STAT_FORWARD_OUTPUT",
+ [TUNNAT_STAT_ENCAP_OUTPUT] ="TUNNAT_STAT_ENCAP_OUTPUT",
+ [TUNNAT_STAT_DROP_OUTPUT] ="TUNNAT_STAT_DROP_OUTPUT",
[TUNNAT_STAT_FORWARD_RAW_OUTPUT] = "TUNNAT_STAT_FORWARD_RAW_OUTPUT",
[TUNNAT_STAT_FORWARD_TUNNEL_OUTPUT] = "TUNNAT_STAT_FORWARD_TUNNEL_OUTPUT",
- [TUNNAT_STAT_ENCAP_OUTPUT] = "TUNNAT_STAT_ENCAP_OUTPUT",
[TUNNAT_STAT_SESSION_ADD] = "TUNNAT_STAT_SESSION_ADD",
[TUNNAT_STAT_SESSION_REMOVE] = "TUNNAT_STAT_SESSION_REMOVE",
[TUNNAT_STAT_ENCAP_FAIL_NO_SESSION] = "TUNNAT_STAT_ENCAP_FAIL_NO_SESSION",
diff --git a/tunnat/include/tunnel.h b/tunnat/include/tunnel.h
index a3af3d7..10449e5 100644
--- a/tunnat/include/tunnel.h
+++ b/tunnat/include/tunnel.h
@@ -104,11 +104,14 @@ protected:
public:
int PacketParse(const char * pkt, unsigned int pkt_len);
int PacketConstruct(const char * pkt, unsigned int pkt_len);
- int GetAddressInfo(struct AddressInfo & addr_info);
+ int GetAddressInfo(struct AddressInfo & addr_info)
+ {
+ return 0;
+ }
void ReverseAddress()
{
- return;
+ vxlan_hdr_.dir = ~vxlan_hdr_.dir;
}
static int PacketForwardModify(const char * pkt, unsigned int pkt_len);
diff --git a/tunnat/src/runtime.cc b/tunnat/src/runtime.cc
index 4f9b377..9512aa2 100644
--- a/tunnat/src/runtime.cc
+++ b/tunnat/src/runtime.cc
@@ -219,6 +219,7 @@ static int __virt_to_phy_pkt_forward(TunnatInstance * instance, TunnatThreadInst
tunnel_type tun_type = static_cast<tunnel_type>(ctrlzone->__encap_type);
TunnelContainer::PacketForwardModify(tun_start, ctrlzone->__encap_len, tun_type);
+ TUNNAT_THREAD_STAT_ADD(TUNNAT_STAT_FORWARD_TUNNEL_OUTPUT, 1);
return RT_SUCCESS;
}
@@ -268,7 +269,6 @@ static int __virt_to_phy_pkt_encap(TunnatInstance * instance, TunnatThreadInstan
tun_array.tun_array[i].PacketConstruct(pkt_ptr, pkt_len);
}
- TUNNAT_THREAD_STAT_ADD(TUNNAT_STAT_ENCAP_OUTPUT, 1);
return RT_SUCCESS;
}
@@ -310,8 +310,12 @@ static void __virt_to_phy_one_device(TunnatInstance * instance, TunnatThreadInst
}
marsio_send_burst(phy_device_hand->vdev_sendpath, tid, fwd_mbufs, nr_fwd_mbufs);
- marsio_send_burst(phy_device_hand->vdev_sendpath, tid, encap_bufs, nr_encap_bufs);
+ marsio_send_burst(phy_device_hand->vdev_sendpath, tid, encap_bufs, nr_encap_bufs);
marsio_buff_free(instance->mr_instance, drop_bufs, nr_drop_bufs, MARSIO_SOCKET_ID_ANY, tid);
+
+ TUNNAT_THREAD_STAT_ADD(TUNNAT_STAT_FORWARD_OUTPUT, nr_fwd_mbufs);
+ TUNNAT_THREAD_STAT_ADD(TUNNAT_STAT_ENCAP_OUTPUT, nr_encap_bufs);
+ TUNNAT_THREAD_STAT_ADD(TUNNAT_STAT_DROP_OUTPUT, nr_drop_bufs);
return;
}
diff --git a/tunnat/src/tunnel.cc b/tunnat/src/tunnel.cc
index 59cc5ec..1172b4f 100644
--- a/tunnat/src/tunnel.cc
+++ b/tunnat/src/tunnel.cc
@@ -111,13 +111,8 @@ int TunVxlan::PacketConstruct(const char * pkt, unsigned int pkt_len)
struct udp_hdr * udp_hdr = (struct udp_hdr *)pkt;
*udp_hdr = udp_hdr_;
- /* 交换端口,清空校验和 */
- uint16_t __swap_udp_port = udp_hdr->dst_port;
- udp_hdr->dst_port = udp_hdr->src_port;
- udp_hdr->src_port = __swap_udp_port;
-
udp_hdr->dgram_len = htons(pkt_len - offset);
- udp_hdr_.dgram_cksum = 0;
+ udp_hdr->dgram_cksum = 0;
pkt += sizeof(struct udp_hdr);
offset += sizeof(struct udp_hdr);
@@ -133,11 +128,6 @@ int TunVxlan::PacketConstruct(const char * pkt, unsigned int pkt_len)
return RT_SUCCESS;
}
-int TunVxlan::GetAddressInfo(AddressInfo & addr_info)
-{
- return 0;
-}
-
int TunVxlan::PacketForwardModify(const char * pkt, unsigned int pkt_len)
{
struct ether_hdr * eth_hdr = (struct ether_hdr *)pkt;