src/event/ngx_event_udp.h - nginx source code

Data types defined

Macros defined

Source code


  1. /*
  2. * Copyright (C) Nginx, Inc.
  3. */


  4. #ifndef _NGX_EVENT_UDP_H_INCLUDED_
  5. #define _NGX_EVENT_UDP_H_INCLUDED_


  6. #include <ngx_config.h>
  7. #include <ngx_core.h>


  8. #if !(NGX_WIN32)

  9. #if ((NGX_HAVE_MSGHDR_MSG_CONTROL)                                            \
  10.      && (NGX_HAVE_IP_SENDSRCADDR || NGX_HAVE_IP_RECVDSTADDR                   \
  11.          || NGX_HAVE_IP_PKTINFO                                               \
  12.          || (NGX_HAVE_INET6 && NGX_HAVE_IPV6_RECVPKTINFO)))
  13. #define NGX_HAVE_ADDRINFO_CMSG  1

  14. #endif


  15. struct ngx_udp_connection_s {
  16.     ngx_rbtree_node_t   node;
  17.     ngx_connection_t   *connection;
  18.     ngx_buf_t          *buffer;
  19.     ngx_str_t           key;
  20. };


  21. #if (NGX_HAVE_ADDRINFO_CMSG)

  22. typedef union {
  23. #if (NGX_HAVE_IP_SENDSRCADDR || NGX_HAVE_IP_RECVDSTADDR)
  24.     struct in_addr        addr;
  25. #endif

  26. #if (NGX_HAVE_IP_PKTINFO)
  27.     struct in_pktinfo     pkt;
  28. #endif

  29. #if (NGX_HAVE_INET6 && NGX_HAVE_IPV6_RECVPKTINFO)
  30.     struct in6_pktinfo    pkt6;
  31. #endif
  32. } ngx_addrinfo_t;

  33. size_t ngx_set_srcaddr_cmsg(struct cmsghdr *cmsg,
  34.     struct sockaddr *local_sockaddr);
  35. ngx_int_t ngx_get_srcaddr_cmsg(struct cmsghdr *cmsg,
  36.     struct sockaddr *local_sockaddr);

  37. #endif

  38. void ngx_event_recvmsg(ngx_event_t *ev);
  39. ssize_t ngx_sendmsg(ngx_connection_t *c, struct msghdr *msg, int flags);
  40. void ngx_udp_rbtree_insert_value(ngx_rbtree_node_t *temp,
  41.     ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
  42. #endif

  43. void ngx_delete_udp_connection(void *data);


  44. #endif /* _NGX_EVENT_UDP_H_INCLUDED_ */