Skip to content

Commit a9cd9cb

Browse files
committed
support enable_icmp
1 parent f401628 commit a9cd9cb

9 files changed

+56
-236
lines changed

CMakeLists.txt

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.0)
22

3-
PROJECT(ip_vs_ca C)
3+
project(ip_vs_ca C)
44

55
execute_process(COMMAND uname -r
66
OUTPUT_VARIABLE KERNEL_RELEASE
@@ -13,8 +13,7 @@ find_path(KERNEL_SRCDIR Makefile PATHS
1313
message(STATUS "Kernel release: ${KERNEL_RELEASE}")
1414
message(STATUS "Kernel source: ${KERNEL_SRCDIR}")
1515

16-
#set(CPACK_GENERATOR "RPM;DEB")
17-
set(CPACK_GENERATOR "RPM")
16+
set(CPACK_GENERATOR "RPM;DEB")
1817
set(CPACK_PACKAGE_NAME "ip_vs_ca")
1918
set(CPACK_PACKAGE_CONTACT "[email protected]")
2019
set(CPACK_PACKAGE_VENDOR "yubo.org")
@@ -35,11 +34,10 @@ set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
3534
set(CPACK_PACKAGE_RELOCATABLE "")
3635
include(CPack)
3736

38-
39-
ADD_CUSTOM_COMMAND(OUTPUT ChangeLog
37+
add_custom_command(OUTPUT ChangeLog
4038
COMMAND git log --format='* %cd %aN%n- (%h) %s%d%n' --date=local | sed -r 's/[0-9]+:[0-9]+:[0-9]+ //' >> ${CMAKE_CURRENT_BINARY_DIR}/ChangeLog
4139
COMMENT "export git log to ChangeLog")
4240

43-
ADD_CUSTOM_TARGET(PKGFILES ALL DEPENDS ChangeLog)
41+
add_custom_target(PKGFILES ALL DEPENDS ChangeLog)
4442

4543
add_subdirectory(src)

Makefile

-220
This file was deleted.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ insmod ./ip_vs_ca.ko
3838
### build rpm/deb
3939
```shell
4040
cd build
41-
cmake ..
41+
cmake .. #or cmake -DENABLE_ICMP=1 ..
4242
make package
4343
rpm -ivh ip_vs_ca-`uname -r`-0.1.0.x86_64.rpm
4444
#or

src/CMakeLists.txt

+20-6
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,33 @@
11
cmake_minimum_required(VERSION 3.0)
22

3-
ADD_DEFINITIONS(-g -O2 -fsigned-char -freg-struct-return -Wall -W -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Winline -Werror)
3+
add_definitions(-g -O2 -fsigned-char -freg-struct-return -Wall -W -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Winline -Werror)
4+
5+
6+
if(DEFINED ENABLE_ICMP)
7+
message(STATUS "DEFINED ENABLE_ICMP=${ENABLE_ICMP}")
8+
set(KBUILDFILE "${CMAKE_CURRENT_SOURCE_DIR}/Kbuild.icmp")
9+
else()
10+
set(KBUILDFILE "${CMAKE_CURRENT_SOURCE_DIR}/Kbuild.default")
11+
endif()
12+
13+
14+
add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Kbuild
15+
COMMAND cp -f ${KBUILDFILE} "${CMAKE_CURRENT_SOURCE_DIR}/Kbuild"
16+
DEPENDS ${KBUILDFILE}
17+
COMMENT "Create Kbuild")
418

519
# Build the module
620

7-
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/ip_vs_ca.ko
8-
COMMAND make -C ${KERNEL_SRCDIR} M=${CMAKE_CURRENT_SOURCE_DIR}
9-
DEPENDS ca_core.c ca_conn.c ca_ctl.c ca_proto.c utils.c
21+
add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/ip_vs_ca.ko
22+
COMMAND make -C ${KERNEL_SRCDIR} ${CMAKE_C_FLAGS} M=${CMAKE_CURRENT_SOURCE_DIR} modules
23+
DEPENDS ca_core.c ca_conn.c ca_ctl.c ca_proto.c utils.c Kbuild
1024
COMMENT "Building ip_vs_ca.ko")
1125

12-
ADD_CUSTOM_TARGET(KMODFILES ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ip_vs_ca.ko)
26+
add_custom_target(KMODFILES ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ip_vs_ca.ko)
1327

1428

1529
# Installation of the module
16-
SET(module_install_path /lib/modules/${KERNEL_RELEASE}/kernel/extra/ip_vs_ca)
30+
set(module_install_path /lib/modules/${KERNEL_RELEASE}/kernel/extra/ip_vs_ca)
1731
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ip_vs_ca.ko
1832
DESTINATION ${module_install_path}
1933
PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

src/Kbuild

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
ip_vs_ca-objs := ca_core.o ca_conn.o ca_ctl.o ca_proto.o utils.o
22
obj-m += ip_vs_ca.o
3+
ccflags-y := -DIP_VS_CA_ICMP
34

45
#hostprogs-y := udpd
56
#always := $(hostprogs-y)
6-
HOSTCFLAGS_udpd.o += -I$(objtree)/usr/include
7+
#HOSTCFLAGS_udpd.o += -I$(objtree)/usr/include

src/Kbuild.default

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
ip_vs_ca-objs := ca_core.o ca_conn.o ca_ctl.o ca_proto.o utils.o
2+
obj-m += ip_vs_ca.o
3+
ccflags-y :=
4+
5+
#hostprogs-y := udpd
6+
#always := $(hostprogs-y)
7+
#HOSTCFLAGS_udpd.o += -I$(objtree)/usr/include

src/Kbuild.icmp

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
ip_vs_ca-objs := ca_core.o ca_conn.o ca_ctl.o ca_proto.o utils.o
2+
obj-m += ip_vs_ca.o
3+
ccflags-y := -DIP_VS_CA_ICMP
4+
5+
#hostprogs-y := udpd
6+
#always := $(hostprogs-y)
7+
#HOSTCFLAGS_udpd.o += -I$(objtree)/usr/include

src/ca.h

+2
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,15 @@ struct ip_vs_ca_stat_mib {
199199

200200
struct syscall_links {
201201
asmlinkage int (*getpeername) (int, struct sockaddr *, int *);
202+
#ifdef IP_VS_CA_ICMP
202203
asmlinkage int (*accept4) (int, struct sockaddr *, int *, int);
203204
asmlinkage int (*recvfrom) (int fd, void *ubuf, size_t size,
204205
unsigned flags, struct sockaddr *addr, int *addr_len);
205206
asmlinkage int (*recvmsg) (int fd, struct msghdr *msg,
206207
unsigned int flags);
207208
asmlinkage int (*recvmmsg) (int fd, struct mmsghdr *mmsg,
208209
unsigned int vlen, unsigned int flags, struct timespec *timeout);
210+
#endif
209211
};
210212

211213
struct ip_vs_ca_protocol {

0 commit comments

Comments
 (0)