根据rfc2553,ipv6地址是一个16字节的数组,用网络序存储。
3.2 IPv6 Address Structure
A new in6_addr structure holds a single IPv6 address and is defined
as a result of including <netinet/in.h>:
struct in6_addr {
uint8_t s6_addr[16]; /* IPv6 address */
};
This data structure contains an array of sixteen 8-bit elements, which make up one 128-bit IPv6 address. The IPv6 address is stored in network byte order.
IPv6地址由高位到低位存储在第0至15个uint8_t中。例如地址2001:0db8:1234::5210,rfc2553存储为(通过inet_pton):
static const uint8_t myaddr[16] = { 0x20, 0x01, 0x0d, 0xb8, 0x12, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x10 };
上述地址转换为uint32_t网络序后:
static const uint32_t myaddr_network_byte_order[4]={ 0xb80d0120, 0x3412, 0x0, 0x10520000}
再转换为主机序后,这也是MAAT输入ipmatcher和rulescan的格式:
static const uint32_t myaddr_host_byte_order[4]={ 0x20010db8, 0x12340000, 0x0, 0x5210}
目前,ip_matcher中int数组高位到低位的顺序是a[3]a[2]a[1]a[0],与RFC2553、Linux都不一致。
64 lines
2.7 KiB
CMake
64 lines
2.7 KiB
CMake
# CMakeFiles for 3rd vendor library
|
|
|
|
include(ExternalProject)
|
|
#### GoogleTest
|
|
ExternalProject_Add(GoogleTest PREFIX GoogleTest
|
|
URL ${CMAKE_CURRENT_SOURCE_DIR}/googletest-release-1.8.0.tar.gz
|
|
URL_MD5 16877098823401d1bf2ed7891d7dce36
|
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
|
|
|
|
ExternalProject_Get_Property(GoogleTest INSTALL_DIR)
|
|
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
|
|
|
|
add_library(gtest STATIC IMPORTED GLOBAL)
|
|
set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libgtest.a)
|
|
set_property(TARGET gtest PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
|
|
set_property(TARGET gtest PROPERTY INTERFACE_LINK_LIBRARIES pthread)
|
|
|
|
ExternalProject_Add(hiredis-vip PREFIX hiredis-vip
|
|
URL ${CMAKE_CURRENT_SOURCE_DIR}/hiredis-vip-0.3.0.tar.gz
|
|
URL_MD5 e4d4a2928188b11f696d35ca1c52e9a4
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND make
|
|
INSTALL_COMMAND ""
|
|
BUILD_IN_SOURCE 1)
|
|
|
|
ExternalProject_Get_Property(hiredis-vip SOURCE_DIR)
|
|
set(HIREDIS_INCLUDE_DIRECTORIES ${SOURCE_DIR})
|
|
file(MAKE_DIRECTORY ${HIREDIS_INCLUDE_DIRECTORIES})
|
|
|
|
add_library(hiredis-vip-static STATIC IMPORTED GLOBAL)
|
|
set_property(TARGET hiredis-vip-static PROPERTY IMPORTED_LOCATION ${SOURCE_DIR}/libhiredis_vip.a)
|
|
set_property(TARGET hiredis-vip-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${SOURCE_DIR})
|
|
|
|
ExternalProject_Add(igraph PREFIX igraph
|
|
URL ${CMAKE_CURRENT_SOURCE_DIR}/igraph-0.7.1.tar.gz
|
|
URL_MD5 4f6e7c16b45fce8ed423516a9786e4e8
|
|
CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR> --disable-shared --with-pic
|
|
BUILD_COMMAND make
|
|
INSTALL_COMMAND make install
|
|
BUILD_IN_SOURCE 1)
|
|
|
|
ExternalProject_Get_Property(igraph INSTALL_DIR)
|
|
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
|
|
|
|
add_library(igraph-static STATIC IMPORTED GLOBAL)
|
|
add_dependencies(igraph-static igraph)
|
|
set_property(TARGET igraph-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libigraph.a)
|
|
set_property(TARGET igraph-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
|
|
|
|
ExternalProject_Add(ipmatcher PREFIX ipmatcher
|
|
URL ${CMAKE_CURRENT_SOURCE_DIR}/IPMatcher-20200513.zip
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND make
|
|
INSTALL_COMMAND make DESTDIR=<INSTALL_DIR> install
|
|
BUILD_IN_SOURCE 1)
|
|
|
|
ExternalProject_Get_Property(ipmatcher INSTALL_DIR)
|
|
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
|
|
|
|
add_library(ipmatcher-static STATIC IMPORTED GLOBAL)
|
|
add_dependencies(ipmatcher-static ipmatcher)
|
|
set_property(TARGET ipmatcher-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/ipmatcher.a)
|
|
set_property(TARGET ipmatcher-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
|