diff --git a/include/n2n.h b/include/n2n.h index ec4094d..65b781d 100644 --- a/include/n2n.h +++ b/include/n2n.h @@ -400,6 +400,7 @@ typedef struct filter_rule // for impl, see: network_traffic_filter.c uint8_t process_traffic_filter_rule_str(const char* rule_str, filter_rule_t* rule_struct); +#ifdef FILTER_TRAFFIC /* * network traffic filter interface */ @@ -417,6 +418,7 @@ typedef struct network_traffic_filter n2n_verdict (*filter_packet_from_tap)(struct network_traffic_filter* filter, n2n_edge_t *eee, uint8_t *payload, uint16_t payload_size); } network_traffic_filter_t; +#endif /* *************************************************** */ @@ -516,7 +518,9 @@ struct n2n_edge { n2n_tuntap_priv_config_t tuntap_priv_conf; /**< Tuntap config */ +#ifdef FILTER_TRAFFIC network_traffic_filter_t *network_traffic_filter; +#endif }; diff --git a/include/network_traffic_filter.h b/include/network_traffic_filter.h index b1c4fd1..25682fc 100644 --- a/include/network_traffic_filter.h +++ b/include/network_traffic_filter.h @@ -25,6 +25,7 @@ #include "n2n.h" +#ifdef FILTER_TRAFFIC /* * add feature to drop or accept specific packet transmit over edge network interface by rules. * @@ -40,6 +41,6 @@ network_traffic_filter_t* create_network_traffic_filter(); void destroy_network_traffic_filter(network_traffic_filter_t* filter); void network_traffic_filter_add_rule(network_traffic_filter_t* filter, filter_rule_t* rules); - +#endif #endif //N2N_NETWORK_TRAFFIC_FILTER_H diff --git a/src/edge_utils.c b/src/edge_utils.c index 14eb67c..c72b2bd 100644 --- a/src/edge_utils.c +++ b/src/edge_utils.c @@ -1180,12 +1180,14 @@ static int handle_PACKET(n2n_edge_t * eee, } } - if( eee->network_traffic_filter->filter_packet_from_peer( eee->network_traffic_filter, eee, orig_sender, +#ifdef FILTER_TRAFFIC + if(eee->network_traffic_filter->filter_packet_from_peer( eee->network_traffic_filter, eee, orig_sender, eth_payload, eth_size ) == N2N_DROP){ traceEvent(TRACE_DEBUG, "Filtered packet %u", (unsigned int)eth_size); return(0); } - +#endif + if(eee->cb.packet_from_peer) { uint16_t tmp_eth_size = eth_size; if(eee->cb.packet_from_peer(eee, orig_sender, eth_payload, &tmp_eth_size) == N2N_DROP) { @@ -1736,6 +1738,7 @@ void edge_read_from_tap(n2n_edge_t * eee) { } else { +#ifdef FILTER_TRAFFIC if(eee->network_traffic_filter) { if( eee->network_traffic_filter->filter_packet_from_tap( eee->network_traffic_filter, eee, eth_pkt, len) == N2N_DROP){ @@ -1743,6 +1746,7 @@ void edge_read_from_tap(n2n_edge_t * eee) { return; } } +#endif if(eee->cb.packet_from_tap) { uint16_t tmp_len = len;