# 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@
_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.
*/
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);
*/
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 */
-SUBMAKEFILES := io/all.mk ldap/all.mk util/all.mk
+SUBMAKEFILES := \
+ io/all.mk \
+ ldap/all.mk \
+ tls/all.mk \
+ util/all.mk
--- /dev/null
+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)
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
/*
* 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;
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__
/*
-TARGET := libfreeradius-server.a
+TARGET := libfreeradius-server.a
SOURCES := cond_eval.c \
cond_tokenize.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)\"
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...
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)
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)
+++ /dev/null
-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
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)
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)
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...
SOURCES := proto_detail.c
-TGT_PREREQS := libfreeradius-util.a libfreeradius-radius.a libfreeradius-io.a
+TGT_PREREQS := libfreeradius-util.a libfreeradius-io.a
SOURCES := proto_detail_file.c
-TGT_PREREQS := libfreeradius-util.a libfreeradius-radius.a
+TGT_PREREQS := libfreeradius-util.a
SOURCES := proto_detail_process.c
-TGT_PREREQS := libfreeradius-util.a libfreeradius-radius.a
+TGT_PREREQS := libfreeradius-util.a
SOURCES := proto_detail_work.c
-TGT_PREREQS := libfreeradius-util.a libfreeradius-radius.a
+TGT_PREREQS := libfreeradius-util.a
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
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)
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)
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)
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)
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)
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)
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)
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)
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)