*/
RCSID("$Id$")
-#include <freeradius-devel/io/listen.h>
#include <freeradius-devel/server/auth.h>
#include <freeradius-devel/server/module.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/state.h>
#include <freeradius-devel/unlang/call.h>
RETURN_UNLANG_OK;
#endif
}
-
-/*
- * Debug the packet if requested.
- */
-void common_packet_debug(request_t *request, fr_packet_t *packet, fr_pair_list_t *pairs, bool received)
-{
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- char if_name[IFNAMSIZ];
-#endif
-
- if (!packet) return;
- if (!RDEBUG_ENABLED) return;
-
-
- log_request(L_DBG, L_DBG_LVL_1, request, __FILE__, __LINE__, "%s code %u Id %i from %s%pV%s:%i to %s%pV%s:%i "
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- "%s%s%s"
-#endif
- "length %zu",
- received ? "Received" : "Sent",
- packet->code,
- packet->id,
- packet->socket.inet.src_ipaddr.af == AF_INET6 ? "[" : "",
- fr_box_ipaddr(packet->socket.inet.src_ipaddr),
- packet->socket.inet.src_ipaddr.af == AF_INET6 ? "]" : "",
- packet->socket.inet.src_port,
- packet->socket.inet.dst_ipaddr.af == AF_INET6 ? "[" : "",
- fr_box_ipaddr(packet->socket.inet.dst_ipaddr),
- packet->socket.inet.dst_ipaddr.af == AF_INET6 ? "]" : "",
- packet->socket.inet.dst_port,
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- packet->socket.inet.ifindex ? "via " : "",
- packet->socket.inet.ifindex ? fr_ifname_from_ifindex(if_name, packet->socket.inet.ifindex) : "",
- packet->socket.inet.ifindex ? " " : "",
-#endif
- packet->data_len);
-
- if (received) {
- log_request_pair_list(L_DBG_LVL_1, request, NULL, pairs, NULL);
- } else {
- log_request_proto_pair_list(L_DBG_LVL_1, request, NULL, pairs, NULL);
- }
-}
#include <freeradius-devel/server/exec.h>
#include <freeradius-devel/server/exfile.h>
#include <freeradius-devel/server/global_lib.h>
-#include <freeradius-devel/server/listen.h>
#include <freeradius-devel/server/log.h>
#include <freeradius-devel/server/main_config.h>
#include <freeradius-devel/server/main_loop.h>
#include <freeradius-devel/server/pairmove.h>
#include <freeradius-devel/server/password.h>
#include <freeradius-devel/server/pool.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/regex.h>
#include <freeradius-devel/server/rcode.h>
#include <freeradius-devel/server/request_data.h>
+++ /dev/null
-#pragma once
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-/**
- * $Id$
- *
- * @file lib/server/listen.h
- * @brief Listener API. Binds sockets to protocol encoders/decoders.
- *
- * @copyright 2015 The FreeRADIUS server project
- */
-RCSIDH(listen_h, "$Id$")
-
-#include <freeradius-devel/server/client.h>
-#include <freeradius-devel/server/socket.h>
-#include <freeradius-devel/server/stats.h>
-#include <freeradius-devel/util/event.h>
-#include <freeradius-devel/util/packet.h>
-#include <freeradius-devel/util/pcap.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Types of listeners.
- *
- * Ordered by priority!
- */
-typedef enum RAD_LISTEN_TYPE {
- RAD_LISTEN_NONE = 0,
- RAD_LISTEN_PROXY,
- RAD_LISTEN_AUTH,
- RAD_LISTEN_ACCT,
- RAD_LISTEN_DETAIL,
- RAD_LISTEN_VQP,
- RAD_LISTEN_DHCP,
- RAD_LISTEN_COMMAND,
- RAD_LISTEN_COA,
- RAD_LISTEN_MAX
-} RAD_LISTEN_TYPE;
-
-typedef enum RAD_LISTEN_STATUS {
- RAD_LISTEN_STATUS_INIT = 0,
- RAD_LISTEN_STATUS_KNOWN,
- RAD_LISTEN_STATUS_FROZEN,
- RAD_LISTEN_STATUS_EOL,
- RAD_LISTEN_STATUS_REMOVE_NOW
-} RAD_LISTEN_STATUS;
-
-typedef struct rad_protocol_s rad_protocol_t;
-typedef struct rad_listen rad_listen_t;
-
-typedef int (*rad_listen_recv_t)(rad_listen_t *);
-typedef int (*rad_listen_send_t)(rad_listen_t *, request_t *);
-typedef int (*rad_listen_error_t)(rad_listen_t *, int);
-typedef int (*rad_listen_print_t)(rad_listen_t const *, char *, size_t);
-typedef void (*rad_listen_debug_t)(request_t *, fr_packet_t *, fr_pair_list_t *, bool received);
-typedef int (*rad_listen_encode_t)(rad_listen_t *, request_t *);
-typedef int (*rad_listen_decode_t)(rad_listen_t *, request_t *);
-
-struct rad_listen {
- rad_listen_t *next; /* should be rbtree stuff */
- rad_protocol_t const *proto;
-
- /*
- * For normal sockets.
- */
- RAD_LISTEN_TYPE type;
- int fd;
- char const *server; //!< Name of the virtual server that the listener is associated with
- CONF_SECTION *server_cs; //!< Virtual server that the listener is associated with
- RAD_LISTEN_STATUS status;
- bool old_style;
-
- int count;
- bool dual;
- fr_rb_tree_t *children;
- rad_listen_t *parent;
- bool nodup;
-
- rad_listen_recv_t recv;
- rad_listen_send_t send;
- rad_listen_error_t error;
- rad_listen_encode_t encode;
- rad_listen_decode_t decode;
- rad_listen_debug_t debug;
- rad_listen_print_t print;
-
- CONF_SECTION const *cs;
- void *data;
-};
-#ifdef __cplusplus
-}
-#endif
} radius_signal_t;
#include <freeradius-devel/server/client.h>
-#include <freeradius-devel/server/listen.h>
#include <freeradius-devel/server/signal.h>
fr_event_list_t *main_loop_event_list(void);
+++ /dev/null
-#pragma once
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-/**
- * $Id$
- *
- * @file lib/server/protocol.c
- * @brief Protocol module API.
- *
- * @copyright 2013 Alan DeKok
- */
-RCSIDH(protocol_h, "$Id$")
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <freeradius-devel/io/base.h>
-
-#include <freeradius-devel/server/dl_module.h>
-#include <freeradius-devel/server/listen.h>
-
-/*
- * Debug the packet if requested.
- */
-void common_packet_debug(request_t *request, fr_packet_t *packet, fr_pair_list_t *pairs, bool received)
-{
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- char if_name[IFNAMSIZ];
-#endif
-
- if (!packet) return;
- if (!RDEBUG_ENABLED) return;
-
-
- log_request(L_DBG, L_DBG_LVL_1, request, __FILE__, __LINE__, "%s code %u Id %i from %s%pV%s:%i to %s%pV%s:%i "
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- "%s%s%s"
-#endif
- "length %zu",
- received ? "Received" : "Sent",
- packet->code,
- packet->id,
- packet->src_ipaddr.af == AF_INET6 ? "[" : "",
- fr_box_ipaddr(packet->src_ipaddr),
- packet->src_ipaddr.af == AF_INET6 ? "]" : "",
- packet->src_port,
- packet->dst_ipaddr.af == AF_INET6 ? "[" : "",
- fr_box_ipaddr(packet->dst_ipaddr),
- packet->dst_ipaddr.af == AF_INET6 ? "]" : "",
- packet->dst_port,
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- packet->ifindex ? "via " : "",
- packet->ifindex ? fr_ifname_from_ifindex(if_name, packet->ifindex) : "",
- packet->ifindex ? " " : "",
-#endif
- packet->data_len);
-
- if (received || request->parent) {
- log_request_pair_list(L_DBG_LVL_1, request, NULL, pairs, NULL);
- } else {
- log_request_proto_pair_list(L_DBG_LVL_1, request, NULL, pairs, NULL);
- }
-}
+++ /dev/null
-#pragma once
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-/**
- * $Id$
- *
- * @file lib/server/protocol.h
- * @brief Protocol module API.
- *
- * @copyright 2013 Alan DeKok
- */
-RCSIDH(protocol_h, "$Id$")
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <freeradius-devel/io/base.h>
-
-#include <freeradius-devel/server/dl_module.h>
-#include <freeradius-devel/server/listen.h>
-
-/*
- * We'll use this below.
- */
-typedef int (*rad_listen_parse_t)(CONF_SECTION *, rad_listen_t *);
-typedef int (*rad_listen_unlang_t)(CONF_SECTION *, CONF_SECTION *);
-typedef void (*rad_listen_free_t)(rad_listen_t *);
-
-/*
- * @todo: fix for later
- */
-int common_socket_parse(CONF_SECTION *cs, rad_listen_t *this);
-int common_socket_open(CONF_SECTION *cs, rad_listen_t *this);
-int common_socket_print(rad_listen_t const *this, char *buffer, size_t bufsize);
-void common_packet_debug(request_t *request, fr_packet_t *packet, fr_pair_list_t *pairs, bool received);
-
-/** Struct exported by a proto_* module
- *
- * Used to pass information common to proto_* modules to the server core,
- * and to register callbacks that get executed when processing packets of this
- * protocol type.
- */
-typedef struct rad_protocol_s {
- DL_MODULE_COMMON; //!< Common fields to all loadable modules.
-
- uint32_t transports; //!< What can transport this protocol.
- bool tls; //!< Whether protocol can be wrapped in TLS.
-
- rad_listen_unlang_t bootstrap; //!< Phase1 - Basic validation checks of virtual server.
- rad_listen_unlang_t compile; //!< Phase2 - Compile unlang sections in the virtual
- //!< server that map to packet types used by the protocol.
-
- rad_listen_parse_t parse; //!< Perform extra processing of the configuration data
- //!< specified by config.
-
- rad_listen_parse_t open; //!< Open a descriptor.
-
- rad_listen_recv_t recv; //!< Read an incoming packet from the descriptor.
- rad_listen_send_t send; //!< Write an outgoing packet to the descriptor.
- rad_listen_error_t error; //!< Handle error/eol on the descriptor.
-
- rad_listen_print_t print; //!< Print a line describing the packet being sent or the
- //!< packet that was received.
- rad_listen_debug_t debug; //!< Print an attribute list for debugging.
-
- rad_listen_encode_t encode; //!< Encode an outgoing packet.
- rad_listen_decode_t decode; //!< Decode an incoming packet.
-} rad_protocol_t;
-
-#define TRANSPORT_NONE 0
-#define TRANSPORT_TCP (1 << IPPROTO_TCP)
-#define TRANSPORT_UDP (1 << IPPROTO_UDP)
-#define TRANSPORT_DUAL (TRANSPORT_UDP | TRANSPORT_TCP)
-
-#ifdef __cplusplus
-}
-#endif
* @copyright 2023 Network RADIUS SAS (legal@networkradius.com)
*/
#include <netdb.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/udp.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/bfd/bfd.h>
#include <freeradius-devel/io/application.h>
#include <freeradius-devel/io/listen.h>
#include <freeradius-devel/io/schedule.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/perm.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/util/file.h>
*/
#include <netdb.h>
#include <fcntl.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/io/application.h>
#include <freeradius-devel/io/listen.h>
#include <freeradius-devel/io/schedule.h>
#include <freeradius-devel/io/schedule.h>
#include <freeradius-devel/server/main_config.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/syserror.h>
#include <freeradius-devel/util/misc.h>
* @copyright 2017 Alan DeKok (aland@deployingradius.com)
*/
#include <netdb.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/pair.h>
#include <freeradius-devel/server/main_loop.h>
#include <freeradius-devel/io/application.h>
#include <netdb.h>
#include <freeradius-devel/arp/arp.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/udp.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/io/application.h>
*/
#define LOG_PREFIX "proto_dhcpv6_udp"
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/udp.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/io/application.h>
*/
#define LOG_PREFIX "proto_dns_udp"
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/cf_util.h>
#include <freeradius-devel/util/udp.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/protocol/freeradius/freeradius.internal.h>
#include <freeradius-devel/internal/internal.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/request.h>
#include <freeradius-devel/io/listen.h>
#include <freeradius-devel/unlang/call.h>
*/
#include <netdb.h>
#include <fcntl.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/main_loop.h>
#include <freeradius-devel/io/application.h>
#include <freeradius-devel/io/listen.h>
* @copyright 2016 Alan DeKok (aland@deployingradius.com)
*/
#include <netdb.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/radius/tcp.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/radius/radius.h>
* @copyright 2016 Alan DeKok (aland@deployingradius.com)
*/
#include <netdb.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/udp.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/radius/radius.h>
*/
#include <netdb.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/io/application.h>
#include <freeradius-devel/io/listen.h>
* @copyright 2018 Alan DeKok (aland@deployingradius.com)
*/
#include <netdb.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/udp.h>
#include <freeradius-devel/util/trie.h>
#include <freeradius-devel/io/application.h>
*
* @copyright 2020 Network RADIUS SAS (legal@networkradius.com)
*/
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/arp/arp.h>
#include <freeradius-devel/unlang/interpret.h>
*
* @copyright 2023 Network RADIUS SAS (legal@networkradius.com)
*/
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/bfd/bfd.h>
#include "bfd/session.h"
*
* @copyright 2020 Network RADIUS SAS (legal@networkradius.com)
*/
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/process_types.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/crl/crl.h>
#include <freeradius-devel/io/coord_pair.h>
#include <freeradius-devel/server/main_config.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/tls/strerror.h>
#include <freeradius-devel/tls/utils.h>
#include <freeradius-devel/unlang/interpret.h>
#define LOG_PREFIX "process_dhcpv4"
#include <freeradius-devel/io/application.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/module_method.h>
#include <freeradius-devel/util/dict.h>
#include <freeradius-devel/util/debug.h>
#define LOG_PREFIX "process_dhcpv6 - "
#include <freeradius-devel/io/application.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/pair.h>
#include <freeradius-devel/unlang/interpret.h>
#include <freeradius-devel/util/dict.h>
* @copyright 2024 Arran Cudbard-Bell (a.cudbardb@freeradius.org)
* @copyright 2020 Network RADIUS SAS (legal@networkradius.com)
*/
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/pair.h>
#include <freeradius-devel/server/rcode.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/eap/base.h>
#include <freeradius-devel/eap/types.h>
#include <freeradius-devel/server/process_types.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/virtual_servers.h>
#include <freeradius-devel/server/pair.h>
#include <freeradius-devel/unlang/module.h>
#define LOG_PREFIX "process_ldap_sync"
#include <freeradius-devel/unlang/interpret.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/ldap/sync.h>
#include <freeradius-devel/server/main_config.h>
#include <freeradius-devel/server/module.h>
#include <freeradius-devel/server/pair.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/server/state.h>
#include <freeradius-devel/unlang/module.h>
CONF_PARSER_TERMINATOR
};
-/*
- * Debug the packet if requested.
- */
-static void radius_packet_debug(request_t *request, fr_packet_t *packet, fr_pair_list_t *list, bool received)
-{
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- char if_name[IFNAMSIZ];
-#endif
-
- if (!packet) return;
- if (!RDEBUG_ENABLED) return;
-
- log_request(L_DBG, L_DBG_LVL_1, request, __FILE__, __LINE__, "%s %s ID %d from %s%pV%s:%i to %s%pV%s:%i "
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- "%s%s%s"
-#endif
- "",
- received ? "Received" : "Sending",
- fr_radius_packet_name[packet->code],
- packet->id,
- packet->socket.inet.src_ipaddr.af == AF_INET6 ? "[" : "",
- fr_box_ipaddr(packet->socket.inet.src_ipaddr),
- packet->socket.inet.src_ipaddr.af == AF_INET6 ? "]" : "",
- packet->socket.inet.src_port,
- packet->socket.inet.dst_ipaddr.af == AF_INET6 ? "[" : "",
- fr_box_ipaddr(packet->socket.inet.dst_ipaddr),
- packet->socket.inet.dst_ipaddr.af == AF_INET6 ? "]" : "",
- packet->socket.inet.dst_port
-#ifdef WITH_IFINDEX_NAME_RESOLUTION
- , packet->socket.inet.ifindex ? "via " : "",
- packet->socket.inet.ifindex ? fr_ifname_from_ifindex(if_name, packet->socket.inet.ifindex) : "",
- packet->socket.inet.ifindex ? " " : ""
-#endif
- );
-
- if (received || request->parent) {
- log_request_pair_list(L_DBG_LVL_1, request, NULL, list, NULL);
- } else {
- log_request_proto_pair_list(L_DBG_LVL_1, request, NULL, list, NULL);
- }
-}
-
/** Keep a copy of some attributes to keep them from being tampered with
*
*/
RETURN_UNLANG_FAIL;
}
- radius_packet_debug(request, request->packet, &request->request_pairs, true);
+ LOG_PACKET_DEBUG(request, request->packet, &request->request_pairs, fr_radius_packet_name, true, (request->packet->id >= 0));
if (unlikely(request_is_dynamic_client(request))) {
return new_client(p_result, mctx, request);
*
* @copyright 2020 Network RADIUS SAS (legal@networkradius.com)
*/
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/unlang/interpret.h>
#include <freeradius-devel/util/debug.h>
*
* @copyright 2021 Arran Cudbard-Bell (a.cudbardb@freeradius.org)
*/
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/unlang/interpret.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/protocol/tls/freeradius.h>
* @copyright 2018 Alan DeKok (aland@deployingradius.com)
*/
#include <freeradius-devel/io/application.h>
-#include <freeradius-devel/server/protocol.h>
#include <freeradius-devel/util/dict.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/vmps/vmps.h>