]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Move tls support functions into their own library
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 5 Nov 2017 11:29:10 +0000 (11:29 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 5 Nov 2017 11:29:52 +0000 (11:29 +0000)
37 files changed:
Make.inc.in
src/include/libradius.h
src/include/packet.h
src/include/tcp.h
src/lib/all.mk
src/lib/tls/all.mk [new file with mode: 0644]
src/lib/tls/cache.c [moved from src/main/tls/cache.c with 100% similarity]
src/lib/tls/conf.c [moved from src/main/tls/conf.c with 97% similarity]
src/lib/tls/ctx.c [moved from src/main/tls/ctx.c with 100% similarity]
src/lib/tls/global.c [moved from src/main/tls/global.c with 100% similarity]
src/lib/tls/log.c [moved from src/main/tls/log.c with 100% similarity]
src/lib/tls/ocsp.c [moved from src/main/tls/ocsp.c with 100% similarity]
src/lib/tls/session.c [moved from src/main/tls/session.c with 100% similarity]
src/lib/tls/utils.c [moved from src/main/tls/utils.c with 100% similarity]
src/lib/tls/validate.c [moved from src/main/tls/validate.c with 99% similarity]
src/main/libfreeradius-server.mk
src/main/radiusd.mk
src/main/radmin.mk
src/main/radwho.mk
src/main/tls.mk [deleted file]
src/main/unit_test_attribute.mk
src/main/unit_test_map.mk
src/main/unit_test_module.mk
src/modules/proto_detail/proto_detail.mk
src/modules/proto_detail/proto_detail_file.mk
src/modules/proto_detail/proto_detail_process.mk
src/modules/proto_detail/proto_detail_work.mk
src/modules/rlm_redis_ippool/rlm_redis_ippool_tool.mk
src/tests/util/atomic_queue_test.mk
src/tests/util/channel_test.mk
src/tests/util/control_test.mk
src/tests/util/message_set_test.mk
src/tests/util/radius1_test.mk
src/tests/util/radius_schedule_test.mk
src/tests/util/ring_buffer_test.mk
src/tests/util/schedule_test.mk
src/tests/util/worker_test.mk

index 2a880218f4ddfadb31663f4d0ec32985dea23d42..c877b96167fba7f1b9c2c142ed3fef98ae287a0f 100644 (file)
@@ -133,10 +133,15 @@ MODULES           = @MODULES@
 #  We don't use OpenSSL SHA1 by default because src/modules/rlm_eap/libeap/fips186prf.c
 #  needs access to the SHA internals.
 #
-ifeq "$(WITH_OPENSSL)" "yes"
-CFLAGS         +=  -DWITH_OPENSSL_MD4 -DWITH_OPENSSL_MD5
-CPPFLAGS       := "$(OPENSSL_CPPFLAGS) $(CPPFLAGS)"
+ifneq ($(OPENSSL_LIBS),)
+CFLAGS                 +=  -DWITH_OPENSSL_MD4 -DWITH_OPENSSL_MD5
+CPPFLAGS               := "$(OPENSSL_CPPFLAGS) $(CPPFLAGS)"
+#
+#  Add optional dependency for libfreeradius-server if we're building with OpenSSL
+#
+LIBFREERADIUS_SERVER   := libfreeradius-tls.a
 endif
+LIBFREERADIUS_SERVER   += libfreeradius-server.a
 
 OPENSSL_LIBS   = @OPENSSL_LIBS@
 
index cdd8961f5c6e243e9a420cafe9169872603c60f6..d5ec4ab825a0aa33b6e4ce64e9da4bf0ac22da13 100644 (file)
@@ -145,11 +145,6 @@ do { \
        _p += _ret; \
 } while (0)
 
-extern uint32_t        fr_max_attributes; /* per incoming packet */
-#define        FR_MAX_PACKET_CODE (53)
-extern char const *fr_packet_codes[FR_MAX_PACKET_CODE];
-#define is_radius_code(_x) ((_x > 0) && (_x < FR_MAX_PACKET_CODE))
-
 /*
  *     Several handy miscellaneous functions.
  */
index 8627c7b6ed4f7ca5b27d50be524786f9e0bb59e3..b076dd586232511d414f873f151fc91ad6632e5e 100644 (file)
@@ -101,7 +101,7 @@ bool fr_packet_list_socket_freeze(fr_packet_list_t *pl, int sockfd);
 bool fr_packet_list_socket_thaw(fr_packet_list_t *pl, int sockfd);
 int fr_packet_list_walk(fr_packet_list_t *pl, void *ctx, rb_walker_t callback);
 int fr_packet_list_fd_set(fr_packet_list_t *pl, fd_set *set);
-RADIUS_PACKET *fr_packet_list_recv(fr_packet_list_t *pl, fd_set *set);
+RADIUS_PACKET *fr_packet_list_recv(fr_packet_list_t *pl, fd_set *set, uint32_t max_attributes, bool require_ma);
 
 uint32_t fr_packet_list_num_incoming(fr_packet_list_t *pl);
 uint32_t fr_packet_list_num_outgoing(fr_packet_list_t *pl);
index 7a09682103dc7ca0913d39a7d25b14454d2b24f4..5f26c11597edc200dc2c139d57f605be766f4524 100644 (file)
@@ -25,6 +25,6 @@
  */
 RCSIDH(tcp_h, "$Id$")
 
-int fr_tcp_read_packet(RADIUS_PACKET *packet, bool require_ma);
+int fr_tcp_read_packet(RADIUS_PACKET *packet, uint32_t max_attributes, bool require_ma);
 RADIUS_PACKET *fr_tcp_recv(int sockfd, int flags);
 #endif /* _FR_TCP_H */
index c339107b89afa3c80d850473b7e2368bec5f91f1..75b12bd6a560dd6296e8d151e8173e568005b0bd 100644 (file)
@@ -1 +1,5 @@
-SUBMAKEFILES := io/all.mk ldap/all.mk util/all.mk
+SUBMAKEFILES := \
+       io/all.mk \
+       ldap/all.mk \
+       tls/all.mk \
+       util/all.mk
diff --git a/src/lib/tls/all.mk b/src/lib/tls/all.mk
new file mode 100644 (file)
index 0000000..aa8427f
--- /dev/null
@@ -0,0 +1,22 @@
+TARGETNAME     := libfreeradius-tls
+
+ifneq ($(OPENSSL_LIBS),)
+TARGET         := $(TARGETNAME).a
+endif
+
+SOURCES        := \
+       cache.c \
+       conf.c \
+       ctx.c \
+       global.c \
+       log.c \
+       ocsp.c \
+       session.c \
+       utils.c \
+       validate.c
+
+
+TGT_PREREQS := libfreeradius-util.la
+
+# This lets the linker determine which version of the SSLeay functions to use.
+TGT_LDLIBS  := $(LIBS) $(OPENSSL_LIBS) $(GPERFTOOLS_FLAGS) $(GPERFTOOLS_LIBS)
similarity index 100%
rename from src/main/tls/cache.c
rename to src/lib/tls/cache.c
similarity index 97%
rename from src/main/tls/conf.c
rename to src/lib/tls/conf.c
index 945c85f9427f31b7af88ff9d094c04cc2cb8bf05..81a66dc1bd25b5e57c51a2fafe3019e5a8194d61 100644 (file)
@@ -322,12 +322,8 @@ fr_tls_conf_t *tls_conf_parse_server(CONF_SECTION *cs)
        if (conf_cert_admin_password(conf) < 0) goto error;
 #endif
 
-       if (!main_config.spawn_workers) {
-               conf->ctx_count = 1;
-       } else {
-               conf->ctx_count = fr_tls_max_threads * 2; /* Reduce contention */
-               rad_assert(conf->ctx_count > 0);
-       }
+       conf->ctx_count = fr_tls_max_threads * 2; /* Reduce contention */
+       if (!conf->ctx_count) conf->ctx_count = 1;
 
        /*
         *      Initialize TLS
@@ -440,12 +436,8 @@ fr_tls_conf_t *tls_conf_parse_client(CONF_SECTION *cs)
        /*
         *      Initialize TLS
         */
-       if (!main_config.spawn_workers) {
-               conf->ctx_count = 1;
-       } else {
-               conf->ctx_count = fr_tls_max_threads * 2; /* Even one context per thread will lead to contention */
-               rad_assert(conf->ctx_count > 0);
-       }
+       conf->ctx_count = fr_tls_max_threads * 2; /* Even one context per thread will lead to contention */
+       if (!conf->ctx_count) conf->ctx_count = 1;
 
 #ifdef __APPLE__
        if (conf_cert_admin_password(conf) < 0) goto error;
similarity index 100%
rename from src/main/tls/ctx.c
rename to src/lib/tls/ctx.c
similarity index 100%
rename from src/main/tls/global.c
rename to src/lib/tls/global.c
similarity index 100%
rename from src/main/tls/log.c
rename to src/lib/tls/log.c
similarity index 100%
rename from src/main/tls/ocsp.c
rename to src/lib/tls/ocsp.c
similarity index 100%
rename from src/main/tls/session.c
rename to src/lib/tls/session.c
similarity index 100%
rename from src/main/tls/utils.c
rename to src/lib/tls/utils.c
similarity index 99%
rename from src/main/tls/validate.c
rename to src/lib/tls/validate.c
index 46d66e51341f37bd7e9252e9b8cec953578e716b..12ae7b7ac8cfb97a6a7e4ebd33fdf0bc9e7a16eb 100644 (file)
@@ -263,8 +263,7 @@ int tls_validate_cert_cb(int ok, X509_STORE_CTX *x509_ctx)
                int     fd;
                FILE    *fp;
 
-               snprintf(filename, sizeof(filename), "%s/%s.client.XXXXXXXX",
-                        conf->verify_tmp_dir, main_config.name);
+               snprintf(filename, sizeof(filename), "%s/client.XXXXXXXX", conf->verify_tmp_dir);
 
 #ifdef __COVERITY__
                /*
index 5408f81c7c8a1a6ec482018a04bbfe249ed4d5fe..1958ebfb66a8fd422133bf7a024dd35be357acc1 100644 (file)
@@ -1,4 +1,4 @@
-TARGET := libfreeradius-server.a
+TARGET         := libfreeradius-server.a
 
 SOURCES        :=      cond_eval.c \
                cond_tokenize.c \
@@ -25,8 +25,8 @@ SOURCES       :=      cond_eval.c \
                xlat_tokenize.c
 
 # This lets the linker determine which version of the SSLeay functions to use.
-TGT_LDLIBS  := $(LIBS) $(OPENSSL_LIBS) $(GPERFTOOLS_FLAGS) $(GPERFTOOLS_LIBS)
-TGT_PREREQS    := libfreeradius-util.la libfreeradius-radius.a
+TGT_LDLIBS     := $(LIBS) $(OPENSSL_LIBS) $(GPERFTOOLS_FLAGS) $(GPERFTOOLS_LIBS)
+TGT_PREREQS    := libfreeradius-tls.la libfreeradius-util.la
 
 ifneq ($(MAKECMDGOALS),scan)
 SRC_CFLAGS     += -DBUILT_WITH_CPPFLAGS=\"$(CPPFLAGS)\" -DBUILT_WITH_CFLAGS=\"$(CFLAGS)\" -DBUILT_WITH_LDFLAGS=\"$(LDFLAGS)\" -DBUILT_WITH_LIBS=\"$(LIBS)\"
index bdf2961ed039eb1206907a8f5dffef0e6cca1d4a..27736c7d50d2f059ad978734755030dfe51ca1f4 100644 (file)
@@ -17,16 +17,12 @@ SOURCES := \
     virtual_servers.c \
     process.c
 
-ifneq ($(OPENSSL_LIBS),)
-include ${top_srcdir}/src/main/tls.mk
-endif
-
 SRC_CFLAGS     :=
 
 TGT_INSTALLDIR  := ${sbindir}
 TGT_LDLIBS     := $(LIBS) $(LCRYPT) $(SYSTEMD_LIBS)
 TGT_LDFLAGS    := $(LDFLAGS) $(SYSTEMD_LDFLAGS)
-TGT_PREREQS    := libfreeradius-server.a libfreeradius-util.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 
 # Libraries can't depend on libraries (oops), so make the binary
 # depend on the EAP code...
index 60043a52d7df4e1ed6d9816bd1ad70e4ef4c7621..bbc00bbde30449a05c0b7a64feef209af76f5082 100644 (file)
@@ -7,5 +7,5 @@ endif
 SOURCES                := radmin.c conduit.c
 
 TGT_INSTALLDIR  := ${sbindir}
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-radius.a libfreeradius-server.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS) $(LIBREADLINE)
index 8e052d26d1b12b569035e2207320aeb91cbb6fb9..247e2837c500a35b1b18275ccf7cff85ad8e8699 100644 (file)
@@ -1,5 +1,5 @@
 TARGET         := radwho
 SOURCES                := radwho.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-radius.a libfreeradius-server.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
diff --git a/src/main/tls.mk b/src/main/tls.mk
deleted file mode 100644 (file)
index 82fba6a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-SOURCES        += ${top_srcdir}/src/main/tls/cache.c \
-    ${top_srcdir}/src/main/tls/conf.c \
-    ${top_srcdir}/src/main/tls/ctx.c \
-    ${top_srcdir}/src/main/tls/global.c \
-    ${top_srcdir}/src/main/tls/log.c \
-    ${top_srcdir}/src/main/tls/ocsp.c \
-    ${top_srcdir}/src/main/tls/session.c \
-    ${top_srcdir}/src/main/tls/utils.c \
-    ${top_srcdir}/src/main/tls/validate.c
index 21195ca61a86921c8ff6f0a71b96327f732cda57..a5980a6335efd4a5e754d37cb517272a7bd4f52a 100644 (file)
@@ -1,5 +1,5 @@
 TARGET         := unit_test_attribute
 SOURCES                := unit_test_attribute.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-radius.a libfreeradius-dhcpv4.a libfreeradius-tacacs.a libfreeradius-server.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-radius.a libfreeradius-dhcpv4.a libfreeradius-tacacs.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
index 6995b7c0add92996ea86fc21410f29f3fe2af13a..17934c3f8f6c0ec592d4349d78749d0980bac778 100644 (file)
@@ -1,5 +1,5 @@
 TARGET         := unit_test_map
 SOURCES                := unit_test_map.c ${top_srcdir}/src/main/unlang_compile.c ${top_srcdir}/src/main/unlang_interpret.c
 
-TGT_PREREQS    := libfreeradius-server.a libfreeradius-util.a libfreeradius-radius.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
index b3c710bb1a0631d3787f70c3b87f748170d78562..da6120882dbc9152bbe31aaf5bc9acc5cd3e6a84 100644 (file)
@@ -13,13 +13,9 @@ SOURCES := \
        unlang_compile.c \
        unlang_interpret.c
 
-ifneq ($(OPENSSL_LIBS),)
-include ${top_srcdir}/src/main/tls.mk
-endif
-
 TGT_INSTALLDIR  :=
 TGT_LDLIBS     := $(LIBS) $(LCRYPT)
-TGT_PREREQS    := libfreeradius-server.a libfreeradius-util.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-radius.a libfreeradius-io.a libfreeradius-util.a
 
 # Libraries can't depend on libraries (oops), so make the binary
 # depend on the EAP code...
index 7f74dba8252504753e21a880172e1d7139e1507b..249e04c0039ea3d55843deab92da78d26eea44c5 100644 (file)
@@ -6,4 +6,4 @@ endif
 
 SOURCES                := proto_detail.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := libfreeradius-util.a libfreeradius-io.a
index 61cca14b98e1bfd1ba37adabd5f13d90346810a8..651c28ff4c8e7256207684eb4ab52497861e3cd9 100644 (file)
@@ -6,4 +6,4 @@ endif
 
 SOURCES                := proto_detail_file.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-radius.a
+TGT_PREREQS    := libfreeradius-util.a
index e9d0982e0102d60b82ba920d6c4626e1442bfbff..1a1d89f2468535efbf18458bc0cb1b4207b82c4b 100644 (file)
@@ -6,4 +6,4 @@ endif
 
 SOURCES                := proto_detail_process.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-radius.a
+TGT_PREREQS    := libfreeradius-util.a
index 3fac3abe746bf928538fb6139d45bd7127c76e68..d6c57fe5b6fb2c0d637701a242a03f46b7364832 100644 (file)
@@ -6,4 +6,4 @@ endif
 
 SOURCES                := proto_detail_work.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-radius.a
+TGT_PREREQS    := libfreeradius-util.a
index dd5ef993cb321b1f80aa0bc1cb75aab294bca497..6a59d154679be3de3d72ae4c56f5b26a12adb47f 100644 (file)
@@ -12,7 +12,7 @@ endif
 SOURCES                := $(TARGETNAME).c
 SRC_CFLAGS     += -I$(top_builddir)/src/modules/rlm_redis
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-radius.a libfreeradius-redis.a libfreeradius-server.a 
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-redis.a libfreeradius-util.a
 TGT_LDLIBS     += $(TALLOC_LIBS)
 
 MAN            := rlm_redis_ippool_tool.8
index ccf638c3e7a58d88249dc646b3fd1dd50cdc3d61..58f2d4ad4e4b6ff88c272cc5430dabfb52397274 100644 (file)
@@ -2,6 +2,6 @@ TARGET := atomic_queue_test
 
 SOURCES                := atomic_queue_test.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-server.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
 
index 53985931fa21173ca58a9c53538b265dd6d5c115..898c982de8aa8eaceaa9ab3562b593a747d443ed 100644 (file)
@@ -2,6 +2,6 @@ TARGET := channel_test
 
 SOURCES                := channel_test.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-server.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
 
index 4cd4e189365c5ad00b56183556f211754a332372..8b07ca237fe10166cf8b564eb1887af084955247 100644 (file)
@@ -2,6 +2,6 @@ TARGET := control_test
 
 SOURCES                := control_test.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-server.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
 
index 571110ca01a8471a12deb560d30526956c9edc25..c07397cfe9481dadfcdbfcc7f2357a351abefa12 100644 (file)
@@ -2,6 +2,6 @@ TARGET := message_set_test
 
 SOURCES                := message_set_test.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-server.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
 
index 281e6a3cf3fc23428007915a3c1bae9119852552..b9771abfbe986181e2b4ffafeb752b7b25c0f9c0 100644 (file)
@@ -2,5 +2,5 @@ TARGET := radius1_test
 
 SOURCES                := radius1_test.c
 
-TGT_PREREQS    := libfreeradius-io.a libfreeradius-util.a libfreeradius-radius.a libfreeradius-server.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
index 4a3ef9d22911bbf9d659b73ae1058d6999e91d8b..bb5f65806c9e91ad16b0e04d62a8ed02df3bf373 100644 (file)
@@ -2,6 +2,6 @@ TARGET := radius_schedule_test
 
 SOURCES                := radius_schedule_test.c
 
-TGT_PREREQS    := libfreeradius-io.a libfreeradius-util.a libfreeradius-radius.a libfreeradius-server.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
 
index ff2414ed10006be77a41834d782892274eae87c1..4d64355d43076c9f01b5fa4c0f296548d29e8b20 100644 (file)
@@ -2,6 +2,6 @@ TARGET := ring_buffer_test
 
 SOURCES                := ring_buffer_test.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-server.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
 
index 725ab4fcba9e32b10455cd8099b3dd614e6b7153..773ed0118ad4821c59da779fd8643b75ab3fd975 100644 (file)
@@ -2,6 +2,6 @@ TARGET := schedule_test
 
 SOURCES                := schedule_test.c
 
-TGT_PREREQS    := libfreeradius-io.a libfreeradius-util.a libfreeradius-server.a libfreeradius-radius.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)
 
index 1ec49673fc39296e72dee9606536c64c8dfb269f..824197248f4e980137c6d8c1613b8fb95e60dd86 100644 (file)
@@ -2,6 +2,6 @@ TARGET := worker_test
 
 SOURCES                := worker_test.c
 
-TGT_PREREQS    := libfreeradius-util.a libfreeradius-server.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS    := $(LIBFREERADIUS_SERVER) libfreeradius-io.a libfreeradius-util.a
 TGT_LDLIBS     := $(LIBS)