23 RCSID(
"$Id: 83218a945f69ede32825f1e851d7993b77b5b2ce $")
25 #include <freeradius-devel/libradius.h>
30 #define MAX_PACKET_LEN 4096
36 if (!packet)
return NULL;
75 if (len == 0)
return -2;
78 if ((len < 0) && (errno == ECONNRESET)) {
93 packet_len = (packet->
vector[2] << 8) | packet->
vector[3];
108 packet->
data = talloc_array(packet, uint8_t, packet_len);
124 if (len == 0)
return -2;
127 if ((len < 0) && (errno == ECONNRESET)) {
156 char ip_buf[INET6_ADDRSTRLEN], buffer[256];
161 ip_buf,
sizeof(ip_buf));
162 snprintf(buffer,
sizeof(buffer),
"host %s port %d",
165 snprintf(buffer,
sizeof(buffer),
"socket %d",
int sockfd
Socket this packet was read from.
struct timeval timestamp
When we received the packet.
fr_ipaddr_t src_ipaddr
Src IP address of packet.
VALUE_PAIR * vps
Result of decoding the packet into VALUE_PAIRs.
char const * inet_ntop(int af, void const *src, char *dst, size_t cnt)
PUBLIC int snprintf(char *string, size_t length, char *format, va_alist)
uint8_t * data
Packet data (body).
uint16_t src_port
Src port of packet.
int fr_tcp_read_packet(RADIUS_PACKET *packet, int flags)
char const * fr_syserror(int num)
Guaranteed to be thread-safe version of strerror.
bool fr_radius_ok(RADIUS_PACKET *packet, int flags, decode_fail_t *reason)
See if the data pointed to by PTR is a valid RADIUS packet.
RADIUS_PACKET * fr_radius_alloc(TALLOC_CTX *ctx, bool new_vector)
Allocate a new RADIUS_PACKET.
union fr_ipaddr_t::@1 ipaddr
uint8_t vector[AUTH_VECTOR_LEN]
RADIUS authentication vector.
void fr_radius_free(RADIUS_PACKET **)
Free a RADIUS_PACKET.
size_t data_len
Length of packet data.
void fr_strerror_printf(char const *,...) CC_HINT(format(printf
RADIUS_PACKET * fr_tcp_recv(int sockfd, int flags)