1 /* source: xio-udplite.c */
2 /* Copyright Gerhard Rieger and contributors (see file CHANGES) */
3 /* Published under the GNU General Public License V.2, see file COPYING */
5 /* this file contains the source for handling UDPLITE addresses */
7 #include "xiosysincludes.h"
9 #if WITH_UDPLITE && (WITH_IP4 || WITH_IP6)
12 #include "xio-socket.h"
16 #include "xio-ipapp.h"
17 #include "xio-tcpwrap.h"
20 #include "xio-udplite.h"
23 /* due to bug in Ubuntu-18.04 */
24 #ifndef UDPLITE_SEND_CSCOV
25 # define UDPLITE_SEND_CSCOV 10
27 #ifndef UDPLITE_RECV_CSCOV
28 # define UDPLITE_RECV_CSCOV 11
32 const struct addrdesc xioaddr_udplite_connect
= { "UDPLITE-CONNECT", 1+XIO_RDWR
, xioopen_ipapp_connect
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
, SOCK_DGRAM
, IPPROTO_UDPLITE
, PF_UNSPEC
HELP(":<host>:<port>") };
34 const struct addrdesc xioaddr_udplite_listen
= { "UDPLITE-LISTEN", 1+XIO_RDWR
, xioopen_ipdgram_listen
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_LISTEN
|GROUP_CHILD
|GROUP_RANGE
, PF_UNSPEC
, IPPROTO_UDPLITE
, PF_UNSPEC
HELP(":<port>") };
35 #endif /* WITH_LISTEN */
36 const struct addrdesc xioaddr_udplite_sendto
= { "UDPLITE-SENDTO", 1+XIO_RDWR
, xioopen_udp_sendto
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
, PF_UNSPEC
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<host>:<port>") };
37 const struct addrdesc xioaddr_udplite_recvfrom
= { "UDPLITE-RECVFROM", 1+XIO_RDWR
, xioopen_udp_recvfrom
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_CHILD
|GROUP_RANGE
, PF_UNSPEC
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<port>") };
38 const struct addrdesc xioaddr_udplite_recv
= { "UDPLITE-RECV", 1+XIO_RDONLY
, xioopen_udp_recv
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_RANGE
, PF_UNSPEC
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<port>") };
39 const struct addrdesc xioaddr_udplite_datagram
= { "UDPLITE-DATAGRAM", 1+XIO_RDWR
, xioopen_udp_datagram
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_RANGE
, PF_UNSPEC
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<host>:<port>") };
42 const struct addrdesc xioaddr_udplite4_connect
= { "UDPLITE4-CONNECT", 1+XIO_RDWR
, xioopen_ipapp_connect
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
, SOCK_DGRAM
, IPPROTO_UDPLITE
, PF_INET
HELP(":<host>:<port>") };
44 const struct addrdesc xioaddr_udplite4_listen
= { "UDPLITE4-LISTEN", 1+XIO_RDWR
, xioopen_ipdgram_listen
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_LISTEN
|GROUP_CHILD
|GROUP_RANGE
, PF_INET
, IPPROTO_UDPLITE
, PF_INET
HELP(":<port>") };
45 #endif /* WITH_LISTEN */
46 const struct addrdesc xioaddr_udplite4_sendto
= { "UDPLITE4-SENDTO", 1+XIO_RDWR
, xioopen_udp_sendto
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
, PF_INET
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<host>:<port>") };
47 const struct addrdesc xioaddr_udplite4_datagram
= { "UDPLITE4-DATAGRAM", 1+XIO_RDWR
, xioopen_udp_datagram
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_RANGE
, PF_INET
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<remote-address>:<port>") };
48 const struct addrdesc xioaddr_udplite4_recvfrom
= { "UDPLITE4-RECVFROM", 1+XIO_RDWR
, xioopen_udp_recvfrom
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_CHILD
|GROUP_RANGE
, PF_INET
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<host>:<port>") };
49 const struct addrdesc xioaddr_udplite4_recv
= { "UDPLITE4-RECV", 1+XIO_RDONLY
, xioopen_udp_recv
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_RANGE
, PF_INET
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<port>") };
53 const struct addrdesc xioaddr_udplite6_connect
= { "UDPLITE6-CONNECT", 1+XIO_RDWR
, xioopen_ipapp_connect
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
, SOCK_DGRAM
, IPPROTO_UDPLITE
, PF_INET6
HELP(":<host>:<port>") };
55 const struct addrdesc xioaddr_udplite6_listen
= { "UDPLITE6-LISTEN", 1+XIO_RDWR
, xioopen_ipdgram_listen
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_LISTEN
|GROUP_CHILD
|GROUP_RANGE
, PF_INET6
, IPPROTO_UDPLITE
, 0 HELP(":<port>") };
56 #endif /* WITH_LISTEN */
57 const struct addrdesc xioaddr_udplite6_sendto
= { "UDPLITE6-SENDTO", 1+XIO_RDWR
, xioopen_udp_sendto
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
, PF_INET6
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<host>:<port>") };
58 const struct addrdesc xioaddr_udplite6_datagram
= { "UDPLITE6-DATAGRAM", 1+XIO_RDWR
, xioopen_udp_datagram
,GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_RANGE
, PF_INET6
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<host>:<port>") };
59 const struct addrdesc xioaddr_udplite6_recvfrom
= { "UDPLITE6-RECVFROM", 1+XIO_RDWR
, xioopen_udp_recvfrom
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_CHILD
|GROUP_RANGE
, PF_INET6
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<port>") };
60 const struct addrdesc xioaddr_udplite6_recv
= { "UDPLITE6-RECV", 1+XIO_RDONLY
, xioopen_udp_recv
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP6
|GROUP_IP_UDP
|GROUP_IP_UDPLITE
|GROUP_RANGE
, PF_INET6
, SOCK_DGRAM
, IPPROTO_UDPLITE
HELP(":<port>") };
63 const struct optdesc xioopt_udplite_send_cscov
= { "udplite-send-cscov", NULL
, OPT_UDPLITE_SEND_CSCOV
, GROUP_IP_UDPLITE
, PH_FD
, TYPE_INT
, OFUNC_SOCKOPT
, IPPROTO_UDPLITE
, UDPLITE_SEND_CSCOV
};
64 const struct optdesc xioopt_udplite_recv_cscov
= { "udplite-recv-cscov", NULL
, OPT_UDPLITE_RECV_CSCOV
, GROUP_IP_UDPLITE
, PH_FD
, TYPE_INT
, OFUNC_SOCKOPT
, IPPROTO_UDPLITE
, UDPLITE_RECV_CSCOV
};
66 #endif /* WITH_UDPLITE && (WITH_IP4 || WITH_IP6) */