github.com/cilium/cilium@v1.16.2/bpf/lib/lxc.h (about) 1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2 /* Copyright Authors of Cilium */ 3 4 #pragma once 5 6 #include "common.h" 7 #include "utils.h" 8 #include "ipv6.h" 9 #include "ipv4.h" 10 #include "eth.h" 11 #include "dbg.h" 12 #include "trace.h" 13 #include "csum.h" 14 #include "l4.h" 15 #include "proxy.h" 16 #include "proxy_hairpin.h" 17 18 #define TEMPLATE_LXC_ID 0xffff 19 20 #ifdef ENABLE_SIP_VERIFICATION 21 static __always_inline 22 int is_valid_lxc_src_ip(struct ipv6hdr *ip6 __maybe_unused) 23 { 24 #ifdef ENABLE_IPV6 25 union v6addr valid = {}; 26 27 BPF_V6(valid, LXC_IP); 28 29 return ipv6_addr_equals((union v6addr *)&ip6->saddr, &valid); 30 #else 31 return 0; 32 #endif 33 } 34 35 static __always_inline 36 int is_valid_lxc_src_ipv4(const struct iphdr *ip4 __maybe_unused) 37 { 38 #ifdef ENABLE_IPV4 39 return ip4->saddr == LXC_IPV4; 40 #else 41 /* Can't send IPv4 if no IPv4 address is configured */ 42 return 0; 43 #endif 44 } 45 #else /* ENABLE_SIP_VERIFICATION */ 46 static __always_inline 47 int is_valid_lxc_src_ip(struct ipv6hdr *ip6 __maybe_unused) 48 { 49 return 1; 50 } 51 52 static __always_inline 53 int is_valid_lxc_src_ipv4(struct iphdr *ip4 __maybe_unused) 54 { 55 return 1; 56 } 57 #endif /* ENABLE_SIP_VERIFICATION */