| /** |
| * @file re_udp.h Interface to User Datagram Protocol |
| * |
| * Copyright (C) 2010 Creytiv.com |
| */ |
| |
| |
| struct sa; |
| struct udp_sock; |
| |
| |
| /** |
| * Defines the UDP Receive handler |
| * |
| * @param src Source address |
| * @param mb Datagram buffer |
| * @param arg Handler argument |
| */ |
| typedef void (udp_recv_h)(const struct sa *src, struct mbuf *mb, void *arg); |
| typedef void (udp_error_h)(int err, void *arg); |
| |
| |
| int udp_listen(struct udp_sock **usp, const struct sa *local, |
| udp_recv_h *rh, void *arg); |
| int udp_connect(struct udp_sock *us, const struct sa *peer); |
| int udp_send(struct udp_sock *us, const struct sa *dst, struct mbuf *mb); |
| int udp_send_anon(const struct sa *dst, struct mbuf *mb); |
| int udp_local_get(const struct udp_sock *us, struct sa *local); |
| int udp_setsockopt(struct udp_sock *us, int level, int optname, |
| const void *optval, uint32_t optlen); |
| int udp_sockbuf_set(struct udp_sock *us, int size); |
| void udp_rxsz_set(struct udp_sock *us, size_t rxsz); |
| void udp_rxbuf_presz_set(struct udp_sock *us, size_t rx_presz); |
| void udp_handler_set(struct udp_sock *us, udp_recv_h *rh, void *arg); |
| void udp_error_handler_set(struct udp_sock *us, udp_error_h *eh); |
| int udp_thread_attach(struct udp_sock *us); |
| void udp_thread_detach(struct udp_sock *us); |
| int udp_sock_fd(const struct udp_sock *us, int af); |
| |
| int udp_multicast_join(struct udp_sock *us, const struct sa *group); |
| int udp_multicast_leave(struct udp_sock *us, const struct sa *group); |
| |
| |
| /* Helper API */ |
| typedef bool (udp_helper_send_h)(int *err, struct sa *dst, |
| struct mbuf *mb, void *arg); |
| typedef bool (udp_helper_recv_h)(struct sa *src, |
| struct mbuf *mb, void *arg); |
| |
| struct udp_helper; |
| |
| |
| int udp_register_helper(struct udp_helper **uhp, struct udp_sock *us, |
| int layer, |
| udp_helper_send_h *sh, udp_helper_recv_h *rh, |
| void *arg); |
| int udp_send_helper(struct udp_sock *us, const struct sa *dst, |
| struct mbuf *mb, struct udp_helper *uh); |
| struct udp_helper *udp_helper_find(const struct udp_sock *us, int layer); |