fr_packet_list_t *fr_packet_list_create(int alloc_id);
void fr_packet_list_free(fr_packet_list_t *pl);
-int fr_packet_list_insert(fr_packet_list_t *pl,
+bool fr_packet_list_insert(fr_packet_list_t *pl,
RADIUS_PACKET **request_p);
RADIUS_PACKET **fr_packet_list_find(fr_packet_list_t *pl,
bool fr_packet_list_yank(fr_packet_list_t *pl,
RADIUS_PACKET *request);
int fr_packet_list_num_elements(fr_packet_list_t *pl);
-int fr_packet_list_id_alloc(fr_packet_list_t *pl, int proto,
+bool fr_packet_list_id_alloc(fr_packet_list_t *pl, int proto,
RADIUS_PACKET *request, void **pctx);
-int fr_packet_list_id_free(fr_packet_list_t *pl,
+bool fr_packet_list_id_free(fr_packet_list_t *pl,
RADIUS_PACKET *request);
-int fr_packet_list_socket_add(fr_packet_list_t *pl, int sockfd, int proto,
+bool fr_packet_list_socket_add(fr_packet_list_t *pl, int sockfd, int proto,
fr_ipaddr_t *dst_ipaddr, int dst_port,
void *ctx);
-int fr_packet_list_socket_remove(fr_packet_list_t *pl, int sockfd,
+bool fr_packet_list_socket_del(fr_packet_list_t *pl, int sockfd,
void **pctx);
-int fr_packet_list_socket_freeze(fr_packet_list_t *pl, int sockfd);
-int fr_packet_list_socket_thaw(fr_packet_list_t *pl, int sockfd);
+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,
fr_hash_table_walk_t callback);
int fr_packet_list_fd_set(fr_packet_list_t *pl, fd_set *set);
return NULL;
}
-int fr_packet_list_socket_freeze(fr_packet_list_t *pl, int sockfd)
+bool fr_packet_list_socket_freeze(fr_packet_list_t *pl, int sockfd)
{
fr_packet_socket_t *ps;
if (!pl) {
fr_strerror_printf("Invalid argument");
- return 0;
+ return false;
}
ps = fr_socket_find(pl, sockfd);
if (!ps) {
fr_strerror_printf("No such socket");
- return 0;
+ return false;
}
ps->dont_use = 1;
- return 1;
+ return true;
}
-int fr_packet_list_socket_thaw(fr_packet_list_t *pl, int sockfd)
+bool fr_packet_list_socket_thaw(fr_packet_list_t *pl, int sockfd)
{
fr_packet_socket_t *ps;
- if (!pl) return 0;
+ if (!pl) return false;
ps = fr_socket_find(pl, sockfd);
- if (!ps) return 0;
+ if (!ps) return false;
ps->dont_use = 0;
- return 1;
+ return true;
}
-int fr_packet_list_socket_remove(fr_packet_list_t *pl, int sockfd,
+bool fr_packet_list_socket_del(fr_packet_list_t *pl, int sockfd,
void **pctx)
{
fr_packet_socket_t *ps;
- if (!pl) return 0;
+ if (!pl) return false;
ps = fr_socket_find(pl, sockfd);
- if (!ps) return 0;
+ if (!ps) return false;
/*
* FIXME: Allow the caller forcibly discard these?
*/
- if (ps->num_outgoing != 0) return 0;
+ if (ps->num_outgoing != 0) return false;
ps->sockfd = -1;
pl->num_sockets--;
if (pctx) *pctx = ps->ctx;
- return 1;
+ return true;
}
-int fr_packet_list_socket_add(fr_packet_list_t *pl, int sockfd, int proto,
+bool fr_packet_list_socket_add(fr_packet_list_t *pl, int sockfd, int proto,
fr_ipaddr_t *dst_ipaddr, int dst_port,
void *ctx)
{
if (!pl || !dst_ipaddr || (dst_ipaddr->af == AF_UNSPEC)) {
fr_strerror_printf("Invalid argument");
- return 0;
+ return false;
}
if (pl->num_sockets >= MAX_SOCKETS) {
fr_strerror_printf("Too many open sockets");
- return 0;
+ return false;
}
#ifndef WITH_TCP
if (proto != IPPROTO_UDP) {
fr_strerror_printf("only UDP is supported");
- return 0;
+ return false;
}
#endif
if (!ps) {
fr_strerror_printf("All socket entries are full");
- return 0;
+ return false;
}
memset(ps, 0, sizeof(*ps));
if (getsockname(sockfd, (struct sockaddr *) &src,
&sizeof_src) < 0) {
fr_strerror_printf("%s", strerror(errno));
- return 0;
+ return false;
}
if (!fr_sockaddr2ipaddr(&src, sizeof_src, &ps->src_ipaddr,
&ps->src_port)) {
fr_strerror_printf("Failed to get IP");
- return 0;
+ return false;
}
ps->dst_ipaddr = *dst_ipaddr;
ps->dst_port = dst_port;
ps->src_any = fr_inaddr_any(&ps->src_ipaddr);
- if (ps->src_any < 0) return 0;
+ if (ps->src_any < 0) return false;
ps->dst_any = fr_inaddr_any(&ps->dst_ipaddr);
- if (ps->dst_any < 0) return 0;
+ if (ps->dst_any < 0) return false;
/*
* As the last step before returning.
ps->sockfd = sockfd;
pl->num_sockets++;
- return 1;
+ return true;
}
static int packet_entry_cmp(void const *one, void const *two)
* If pl->alloc_id is set, then fr_packet_list_id_alloc() MUST
* be called before inserting the packet into the list!
*/
-int fr_packet_list_insert(fr_packet_list_t *pl,
+bool fr_packet_list_insert(fr_packet_list_t *pl,
RADIUS_PACKET **request_p)
{
if (!pl || !request_p || !*request_p) return 0;
* We also assume that the sender doesn't care which protocol
* should be used.
*/
-int fr_packet_list_id_alloc(fr_packet_list_t *pl, int proto,
+bool fr_packet_list_id_alloc(fr_packet_list_t *pl, int proto,
RADIUS_PACKET *request, void **pctx)
{
int i, j, k, fd, id, start_i, start_j, start_k;
if ((request->dst_ipaddr.af == AF_UNSPEC) ||
(request->dst_port == 0)) {
fr_strerror_printf("No destination address/port specified");
- return 0;
+ return false;
}
#ifndef WITH_TCP
if ((proto != 0) && (proto != IPPROTO_UDP)) {
fr_strerror_printf("Invalid destination protocol");
- return 0;
+ return false;
}
#endif
src_any = fr_inaddr_any(&request->src_ipaddr);
if (src_any < 0) {
fr_strerror_printf("Can't check src_ipaddr");
- return 0;
+ return false;
}
/*
*/
if (fr_inaddr_any(&request->dst_ipaddr) != 0) {
fr_strerror_printf("Must specify a dst_ipaddr");
- return 0;
+ return false;
}
/*
*/
if (fd < 0) {
fr_strerror_printf("Failed finding socket, caller must allocate a new one");
- return 0;
+ return false;
}
ps->num_outgoing++;
if (pctx) *pctx = ps->ctx;
- return 1;
+ return true;
}
/*
* Should be called AFTER yanking it from the list, so that
* any newly inserted entries don't collide with this one.
*/
-int fr_packet_list_id_free(fr_packet_list_t *pl,
+bool fr_packet_list_id_free(fr_packet_list_t *pl,
RADIUS_PACKET *request)
{
fr_packet_socket_t *ps;
- if (!pl || !request) return 0;
+ if (!pl || !request) return false;
VERIFY_PACKET(request);
ps = fr_socket_find(pl, request->sockfd);
- if (!ps) return 0;
+ if (!ps) return false;
#if 0
if (!ps->id[(request->id >> 3) & 0x1f] & (1 << (request->id & 0x07))) {
ps->num_outgoing--;
pl->num_outgoing--;
- return 1;
+ return true;
}
int fr_packet_list_walk(fr_packet_list_t *pl, void *ctx,