@@ -21,14 +21,7 @@ static __always_inline const struct knock_config* get_and_validate_config(struct
2121static __always_inline int handle_udp_knock (
2222 u32 source_ip , u16 port , const struct port_sequence * seq )
2323{
24- log_debug ("source ip: %d" , source_ip );
25- log_debug ("udp port: %d" , port );
26-
27- struct ip_state new_state = {
28- .sequence_step = 0 , .last_packet_time = bpf_ktime_get_ns (), .sequence_complete = false
29- };
30- struct ip_state * existing_state = bpf_map_lookup_elem (& ip_tracking_map , & source_ip );
31- struct ip_state * state = existing_state != NULL ? existing_state : & new_state ;
24+ struct ip_state * state = bpf_map_lookup_elem (& ip_tracking_map , & source_ip );
3225
3326 if (state -> sequence_step >= seq -> length ) {
3427 log_error ("sequence step > length" );
@@ -41,26 +34,7 @@ static __always_inline int handle_udp_knock(
4134 }
4235
4336 if (port == seq -> ports [state -> sequence_step ]) {
44-
45- const __u64 current_time = bpf_ktime_get_ns ();
46- if (current_time - state -> last_packet_time > MS_TO_NS (seq -> timeout_ms )) {
47- log_info ("sequence timeout" );
48- bpf_map_delete_elem (& ip_tracking_map , & source_ip );
49- return XDP_PASS ;
50- }
51-
52- state -> sequence_step ++ ;
53- state -> last_packet_time = current_time ;
54- state -> sequence_complete = (state -> sequence_step == seq -> length );
55-
56- log_info ("code %d passed" , state -> sequence_step );
57- if (state -> sequence_complete ) {
58- log_info ("sequence complete" );
59- }
60- bpf_map_update_elem (& ip_tracking_map , & source_ip , state , BPF_ANY );
61- } else if (existing_state ) {
62- log_info ("sequence reset" );
63- bpf_map_delete_elem (& ip_tracking_map , & source_ip );
37+ log_info ("doing something useful here..." );
6438 }
6539
6640 return XDP_PASS ;
0 commit comments