| /* source: xio-socket.h */ |
| /* Copyright Gerhard Rieger and contributors (see file CHANGES) */ |
| /* Published under the GNU General Public License V.2, see file COPYING */ |
| |
| #ifndef __xio_socket_h_included |
| #define __xio_socket_h_included 1 |
| |
| /* SO_PROTOTYPE is defined on Solaris, HP-UX |
| SO_PROTOCOL in Linux, is the better name, but came much later */ |
| #ifdef SO_PROTOCOL |
| # undef SO_PROTOTYPE |
| # define SO_PROTOTYPE SO_PROTOCOL |
| #else |
| # ifdef SO_PROTOTYPE |
| # define SO_PROTOCOL SO_PROTOTYPE |
| # else |
| # define SO_PROTOCOL 0x9999 |
| # define SO_PROTOTYPE SO_PROTOCOL |
| # endif |
| #endif |
| |
| extern const struct addrdesc xioaddr_socket_connect; |
| extern const struct addrdesc xioaddr_socket_listen; |
| extern const struct addrdesc xioaddr_socket_sendto; |
| extern const struct addrdesc xioaddr_socket_datagram; |
| extern const struct addrdesc xioaddr_socket_recvfrom; |
| extern const struct addrdesc xioaddr_socket_recv; |
| |
| extern const struct optdesc opt_connect_timeout; |
| extern const struct optdesc opt_so_debug; |
| extern const struct optdesc opt_so_acceptconn; |
| extern const struct optdesc opt_so_broadcast; |
| extern const struct optdesc opt_so_reuseaddr; |
| extern const struct optdesc opt_so_keepalive; |
| extern const struct optdesc opt_so_linger; |
| extern const struct optdesc opt_so_linger; |
| extern const struct optdesc opt_so_oobinline; |
| extern const struct optdesc opt_so_sndbuf; |
| extern const struct optdesc opt_so_sndbuf_late; |
| extern const struct optdesc opt_so_rcvbuf; |
| extern const struct optdesc opt_so_rcvbuf_late; |
| extern const struct optdesc opt_so_error; |
| extern const struct optdesc opt_so_type; |
| extern const struct optdesc opt_so_dontroute; |
| extern const struct optdesc opt_so_rcvlowat; |
| extern const struct optdesc opt_so_sndlowat; |
| extern const struct optdesc opt_so_rcvtimeo; |
| extern const struct optdesc opt_so_sndtimeo; |
| extern const struct optdesc opt_so_audit; |
| extern const struct optdesc opt_so_attach_filter; |
| extern const struct optdesc opt_so_detach_filter; |
| extern const struct optdesc opt_so_bindtodevice; |
| extern const struct optdesc opt_so_bsdcompat; |
| extern const struct optdesc opt_so_cksumrecv; |
| extern const struct optdesc opt_so_timestamp; |
| extern const struct optdesc opt_so_kernaccept; |
| extern const struct optdesc opt_so_no_check; |
| extern const struct optdesc opt_so_noreuseaddr; |
| extern const struct optdesc opt_so_passcred; |
| extern const struct optdesc opt_so_peercred; |
| extern const struct optdesc opt_so_priority; |
| extern const struct optdesc opt_so_reuseport; |
| extern const struct optdesc opt_so_security_authentication; |
| extern const struct optdesc opt_so_security_encryption_network; |
| extern const struct optdesc opt_so_security_encryption_transport; |
| extern const struct optdesc opt_so_use_ifbufs; |
| extern const struct optdesc opt_so_useloopback; |
| extern const struct optdesc opt_so_dgram_errind; |
| extern const struct optdesc opt_so_dontlinger; |
| extern const struct optdesc opt_so_prototype; |
| extern const struct optdesc opt_fiosetown; |
| extern const struct optdesc opt_siocspgrp; |
| extern const struct optdesc opt_bind; |
| extern const struct optdesc opt_protocol_family; |
| extern const struct optdesc opt_setsockopt; |
| extern const struct optdesc opt_setsockopt_int; |
| extern const struct optdesc opt_setsockopt_bin; |
| extern const struct optdesc opt_setsockopt_string; |
| extern const struct optdesc opt_setsockopt_listen; |
| extern const struct optdesc opt_null_eof; |
| |
| |
| extern |
| char *xiogetifname(int ind, char *val, int ins); |
| |
| extern int retropt_socket_pf(struct opt *opts, int *pf); |
| extern int xiogetancillary(int fd, struct msghdr *msgh, int flags); |
| |
| extern int xioopen_connect(struct single *fd, |
| union sockaddr_union *us, size_t uslen, |
| struct sockaddr *them, size_t themlen, |
| struct opt *opts, |
| int pf, int socktype, int protocol, |
| bool alt); |
| extern int _xioopen_connect(struct single *fd, |
| union sockaddr_union *us, size_t uslen, |
| struct sockaddr *them, size_t themlen, |
| struct opt *opts, |
| int pf, int socktype, int protocol, |
| bool alt, int level); |
| |
| /* common to xioopen_udp_sendto, ..unix_sendto, ..rawip */ |
| extern |
| int _xioopen_dgram_sendto(/* them is already in xfd->peersa */ |
| union sockaddr_union *us, socklen_t uslen, |
| struct opt *opts, |
| int xioflags, xiosingle_t *xfd, groups_t groups, |
| int pf, int socktype, int ipproto, bool alt); |
| extern |
| int _xioopen_dgram_recvfrom(struct single *xfd, int xioflags, |
| struct sockaddr *us, socklen_t uslen, |
| struct opt *opts, |
| int pf, int socktype, int proto, int level); |
| extern |
| int _xioopen_dgram_recv(struct single *xfd, int xioflags, |
| struct sockaddr *us, socklen_t uslen, |
| struct opt *opts, int pf, int socktype, int proto, |
| int level); |
| extern int xiodopacketinfo(struct single *sfd, struct msghdr *msgh, bool withlog, bool withenv); |
| extern |
| int xiogetpacketsrc(int fd, struct msghdr *msgh, int flags); |
| extern |
| int xiocheckpeer(xiosingle_t *xfd, |
| union sockaddr_union *pa, union sockaddr_union *la); |
| extern |
| int xiosetsockaddrenv(const char *lr, union sockaddr_union *sau, socklen_t salen, int proto); |
| |
| extern int xioparsenetwork(const char *rangename, int pf, struct xiorange *range, const int ai_flags[2]); |
| extern int xioparserange(const char *rangename, int pf, struct xiorange *range, const int ai_flags[2]); |
| |
| extern int |
| xiosocket(struct opt *opts, int pf, int socktype, int proto, int level); |
| extern int |
| xiosocketpair(struct opt *opts, int pf, int socktype, int proto, int sv[2]); |
| extern int xiosock_reuseaddr(int fd, int ipproto, struct opt *opts); |
| |
| #endif /* !defined(__xio_socket_h_included) */ |