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 */