diff options
| author | Qiuwen Lu <[email protected]> | 2017-06-29 13:28:23 +0800 |
|---|---|---|
| committer | Qiuwen Lu <[email protected]> | 2017-06-29 13:28:23 +0800 |
| commit | 2739172656216bca077605d29155181fa95628ef (patch) | |
| tree | f32b830956d182387236f7afca775eb3dac63800 | |
| parent | 9748c7cd41dd4b92a100a2a1b257005da854fdbb (diff) | |
TUNNAT:调整外层UDP端口的生成规则,不颠倒外层UDP端口。v4.2.2-20170629
| -rw-r--r-- | app/src/mrb.c | 2 | ||||
| -rw-r--r-- | tunnat/include/tunnat.h | 8 | ||||
| -rw-r--r-- | tunnat/include/tunnel.h | 7 | ||||
| -rw-r--r-- | tunnat/src/runtime.cc | 8 | ||||
| -rw-r--r-- | tunnat/src/tunnel.cc | 12 |
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; |
