#ifndef _di_f_socket_address_family_e_
enum {
f_socket_address_family_unspecified_e = AF_UNSPEC,
- f_socket_address_family_local_e = AF_LOCAL,
- f_socket_address_family_inet_e = AF_INET,
- f_socket_address_family_ax25_e = AF_AX25,
- f_socket_address_family_ipx_e = AF_IPX,
- f_socket_address_family_appletalk_e = AF_APPLETALK,
- f_socket_address_family_netrom_e = AF_NETROM,
- f_socket_address_family_bridge_e = AF_BRIDGE,
- f_socket_address_family_atmpvc_e = AF_ATMPVC,
- f_socket_address_family_x25_e = AF_X25,
- f_socket_address_family_inet6_e = AF_INET6,
- f_socket_address_family_rose_e = AF_ROSE,
- f_socket_address_family_decnet_e = AF_DECnet,
- f_socket_address_family_netbeui_e = AF_NETBEUI,
- f_socket_address_family_security_e = AF_SECURITY,
- f_socket_address_family_key_e = AF_KEY,
- f_socket_address_family_netlink_e = AF_NETLINK,
- f_socket_address_family_packet_e = AF_PACKET,
- f_socket_address_family_ash_e = AF_ASH,
- f_socket_address_family_econet_e = AF_ECONET,
- f_socket_address_family_atmsvc_e = AF_ATMSVC,
- f_socket_address_family_rds_e = AF_RDS,
- f_socket_address_family_sna_e = AF_SNA,
- f_socket_address_family_irda_e = AF_IRDA,
- f_socket_address_family_pppox_e = AF_PPPOX,
- f_socket_address_family_wanpipe_e = AF_WANPIPE,
- f_socket_address_family_llc_e = AF_LLC,
- f_socket_address_family_ib_e = AF_IB,
- f_socket_address_family_mpls_e = AF_MPLS,
- f_socket_address_family_can_e = AF_CAN,
- f_socket_address_family_tipc_e = AF_TIPC,
- f_socket_address_family_bluetooth_e = AF_BLUETOOTH,
- f_socket_address_family_iucb_e = AF_IUCV,
- f_socket_address_family_rxrpc_e = AF_RXRPC,
- f_socket_address_family_isdn_e = AF_ISDN,
- f_socket_address_family_phonet_e = AF_PHONET,
- f_socket_address_family_ieee802154_e = AF_IEEE802154,
- f_socket_address_family_caif_e = AF_CAIF,
- f_socket_address_family_alg_e = AF_ALG,
- f_socket_address_family_nfc_e = AF_NFC,
- f_socket_address_family_vsock_e = AF_VSOCK,
- f_socket_address_family_kcm_e = AF_KCM,
- f_socket_address_family_qipcrtr_e = AF_QIPCRTR,
- f_socket_address_family_smc_e = AF_SMC,
- f_socket_address_family_max_e = AF_MAX,
+ f_socket_address_family_alg_e = AF_ALG,
+ f_socket_address_family_appletalk_e = AF_APPLETALK,
+ f_socket_address_family_ash_e = AF_ASH,
+ f_socket_address_family_atmpvc_e = AF_ATMPVC,
+ f_socket_address_family_atmsvc_e = AF_ATMSVC,
+ f_socket_address_family_ax25_e = AF_AX25,
+ f_socket_address_family_bluetooth_e = AF_BLUETOOTH,
+ f_socket_address_family_bridge_e = AF_BRIDGE,
+ f_socket_address_family_caif_e = AF_CAIF,
+ f_socket_address_family_can_e = AF_CAN,
+ f_socket_address_family_decnet_e = AF_DECnet,
+ f_socket_address_family_econet_e = AF_ECONET,
+ f_socket_address_family_ib_e = AF_IB,
+ f_socket_address_family_ieee802154_e = AF_IEEE802154,
+ f_socket_address_family_inet_e = AF_INET,
+ f_socket_address_family_inet6_e = AF_INET6,
+ f_socket_address_family_ipx_e = AF_IPX,
+ f_socket_address_family_irda_e = AF_IRDA,
+ f_socket_address_family_isdn_e = AF_ISDN,
+ f_socket_address_family_iucb_e = AF_IUCV,
+ f_socket_address_family_kcm_e = AF_KCM,
+ f_socket_address_family_key_e = AF_KEY,
+ f_socket_address_family_llc_e = AF_LLC,
+ f_socket_address_family_local_e = AF_LOCAL,
+ f_socket_address_family_mpls_e = AF_MPLS,
+ f_socket_address_family_netbeui_e = AF_NETBEUI,
+ f_socket_address_family_netlink_e = AF_NETLINK,
+ f_socket_address_family_netrom_e = AF_NETROM,
+ f_socket_address_family_nfc_e = AF_NFC,
+ f_socket_address_family_packet_e = AF_PACKET,
+ f_socket_address_family_phonet_e = AF_PHONET,
+ f_socket_address_family_pppox_e = AF_PPPOX,
+ f_socket_address_family_qipcrtr_e = AF_QIPCRTR,
+ f_socket_address_family_rds_e = AF_RDS,
+ f_socket_address_family_rose_e = AF_ROSE,
+ f_socket_address_family_rxrpc_e = AF_RXRPC,
+ f_socket_address_family_security_e = AF_SECURITY,
+ f_socket_address_family_smc_e = AF_SMC,
+ f_socket_address_family_sna_e = AF_SNA,
+ f_socket_address_family_tipc_e = AF_TIPC,
+ f_socket_address_family_vsock_e = AF_VSOCK,
+ f_socket_address_family_wanpipe_e = AF_WANPIPE,
+ f_socket_address_family_x25_e = AF_X25,
+ f_socket_address_family_max_e = AF_MAX,
};
#endif // _di_f_socket_address_family_e_
#endif // _di_f_socket_close_e_
/**
- * Socket protocol codes.
+ * Socket Flags.
*
- * Disclaimer: This may be different from system to system depending on the libc and other factors.
+ * These are flags to pass to either socket receive or socket send functions.
*
- * f_socket_protocol_*_e:
- * - ip: Internet Protocol and pseudo protocol number or IPv6 Hop by Hop Option (RFC1883).
- * - icmp: internet control message protocol.
- * - igmp: Internet Group Management.
- * - ggp: Gateway-Gateway Protocol.
- * - ipencap: IP Encapsulated in IP.
- * - st: ST datagram mode.
- * - tcp: Transmission Control Protocol
- * - egp: Exterior Gateway Protocol
- * - igp: Any private Interior Gateway Protocol.
- * - pup: PARC Universal Packet.
- * - udp: User Datagram Protocol.
- * - hmp: Host Monitoring Protocol.
- * - xns_idp Xerox NS IDP.
- * - rdp: Reliable Datagram Protocol.
- * - iso_tp4 ISO Transport Protocol class 4 (RFC905).
- * - dccp: Datagram Congestion Control Prot. (RFC4340).
- * - xtp: Xpress Transfer Protocol.
- * - ddp: Datagram Delivery Protocol.
- * - idpr_cmtp: IDPR Control Message Transport.
- * - ipv6: Internet Protocol Version 6.
- * - ipv6_route Internet Protocol Version 6 Routing Header.
- * - ipv6_frag Internet Protocol Version 6 Fragment Header.
- * - idrp: Inter-Domain Routing Protocol.
- * - rsvp: Reservation Protocol.
- * - gre: General Routing Encapsulation.
- * - esp: Encapsulated Security Payload (RFC2406).
- * - ah: Authentication Header (RFC2402).
- * - skip: SKIP.
- * - ipv6_icmp ICMP for IPv6.
- * - ipv6_nonxt No Next Header for IPv6.
- * - ipv6_opts Destination Options for IPv6.
- * - rspf: Radio Shortest Path First.
- * - vmtp: Versatile Message Transport.
- * - eigrp: Enhanced Interior Routing Protocol.
- * - ospf: Open Shortest Path First IGP.
- * - ax_25 AX.25 Frames.
- * - ipip: IP within IP Encapsulation Protocol
- * - etherip: Ethernet within IP Encapsulation (RFC3378).
- * - encap: Yet Another IP Encapsulation (RFC1241).
- * - encryption Any private encryption scheme.
- * - pim: Protocol Independent Multicast.
- * - ipcomp: IP Payload Compression Protocol.
- * - vrrp: Virtual Router Redundancy Protocol (RFC5798).
- * - l2tp: Layer Two Tunneling Protocol (RFC2661).
- * - isis: IS-IS over IPv4.
- * - sctp: Stream Control Transmission Protocol.
- * - fc: Fibre Channel.
- * - mobility_header: Mobility Support for IPv6 (RFC3775).
- * - udplite: UDP-Lite (RFC3828).
- * - mpls_in_ip: MPLS-in-IP (RFC4023).
- * - manet: MANET Protocols (RFC5498).
- * - hip: Host Identity Protocol.
- * - shim6: Shim6 Protocol (RFC5533).
- * - wesp: Wrapped Encapsulating Security Payload.
- * - rohc: Robust Header Compression.
+ * f_socket_flag_*_e:
+ * - close_on_exit: Set the close on exit flag for a UNIX socket.
+ * - confirm: Inform the network layer that "forward process" happened.
+ * - error_queue: Designate that queue errors should be received from the socket error queue.
+ * - more: Designate that there is more data to send.
+ * - out_of_band: Enable receiving out of band data.
+ * - peek: Process data from the queue without popping it off the stack.
+ * - record_end: Designate end of record, terminating a sequence.
+ * - route_not: Do not use a gateway to send this packet.
+ * - signal_not: Do not send SIGPIPE signal if remote end closed the connection in a stream oriented connection.
+ * - truncate: Return real length of the packet even if it is truncated to fit into the buffer.
+ * - wait_all: Block until the full request is satisfied.
+ * - wait_not: Use non-blocking.
*/
-#ifndef _di_f_socket_protocol_e_
+#ifndef _di_f_socket_flag_e_
enum {
- f_socket_protocol_ip = 0,
- f_socket_protocol_icmp = 1,
- f_socket_protocol_igmp = 2,
- f_socket_protocol_ggp = 3,
- f_socket_protocol_ipencap = 4,
- f_socket_protocol_st = 5,
- f_socket_protocol_tcp = 6,
- f_socket_protocol_egp = 8,
- f_socket_protocol_igp = 9,
- f_socket_protocol_pup = 12,
- f_socket_protocol_udp = 17,
- f_socket_protocol_hmp = 20,
- f_socket_protocol_xns_idp = 22,
- f_socket_protocol_rdp = 27,
- f_socket_protocol_iso_tp4 = 29,
- f_socket_protocol_dccp = 33,
- f_socket_protocol_xtp = 36,
- f_socket_protocol_ddp = 37,
- f_socket_protocol_idpr_cmtp = 38,
- f_socket_protocol_ipv6 = 41,
- f_socket_protocol_ipv6_route = 43,
- f_socket_protocol_ipv6_frag = 44,
- f_socket_protocol_idrp = 45,
- f_socket_protocol_rsvp = 46,
- f_socket_protocol_gre = 47,
- f_socket_protocol_esp = 50,
- f_socket_protocol_ah = 51,
- f_socket_protocol_skip = 57,
- f_socket_protocol_ipv6_icmp = 58,
- f_socket_protocol_ipv6_nonxt = 59,
- f_socket_protocol_ipv6_opts = 60,
- f_socket_protocol_rspf = 73,
- f_socket_protocol_vmtp = 81,
- f_socket_protocol_eigrp = 88,
- f_socket_protocol_ospf = 89,
- f_socket_protocol_ax_25 = 93,
- f_socket_protocol_ipip = 94,
- f_socket_protocol_etherip = 97,
- f_socket_protocol_encap = 98,
- f_socket_protocol_encrypted = 99,
- f_socket_protocol_pim = 103,
- f_socket_protocol_ipcomp = 108,
- f_socket_protocol_vrrp = 112,
- f_socket_protocol_l2tp = 115,
- f_socket_protocol_isis = 124,
- f_socket_protocol_sctp = 132,
- f_socket_protocol_fc = 133,
- f_socket_protocol_mobility_header = 135,
- f_socket_protocol_udplite = 136,
- f_socket_protocol_mpls_in_ip = 137,
- f_socket_protocol_manet = 138,
- f_socket_protocol_hip = 139,
- f_socket_protocol_shim6 = 140,
- f_socket_protocol_wesp = 141,
- f_socket_protocol_rohc = 142,
+ f_socket_flag_close_on_exit_e = MSG_CMSG_CLOEXEC,
+ f_socket_flag_confirm_e = MSG_CONFIRM,
+ f_socket_flag_error_queue_e = MSG_ERRQUEUE,
+ f_socket_flag_more_e = MSG_MORE,
+ f_socket_flag_out_of_band_e = MSG_OOB,
+ f_socket_flag_peek_e = MSG_PEEK,
+ f_socket_flag_record_end_e = MSG_EOR,
+ f_socket_flag_route_not_e = MSG_DONTROUTE,
+ f_socket_flag_signal_not_e = MSG_NOSIGNAL,
+ f_socket_flag_truncate_e = MSG_TRUNC,
+ f_socket_flag_wait_all_e = MSG_WAITALL,
+ f_socket_flag_wait_not_e = MSG_DONTWAIT,
};
-#endif // _di_f_socket_protocol_e_
+#endif // _di_f_socket_flag_e_
/**
- * Socket protocol families, referred to as a domain.
+ * Socket levels.
*
- * f_socket_protocol_family_*_e:
- * - unspecified: No protocol family specified.
- * - local: Localhost, pipes, Unix sockets, or file sockets (PF_LOCAL, PF_UNIX, PF_FILE).
- * - inet: IP protocol family.
- * - ax25: Amateur Radio AX.25.
- * - ipx: Novell Internet Protocol.
- * - appletalk: Appletalk DDP.
- * - netrom: Amateur radio NetROM.
- * - bridge: Multiprotocol bridge.
- * - atmpvc: ATM PVCs.
- * - x25: Reserved for X.25 project.
- * - inet6: IP version 6.
- * - rose: Amateur Radio X.25 PLP.
- * - decnet: Reserved for DECnet project.
- * - netbeui: Reserved for 802.2LLC project.
- * - security: Security callback pseudo AF.
- * - key: PF_KEY key management API.
- * - netlink: Netlink and BSD (PF_NETLINK and PF_ROUTE).
- * - packet: Packet family.
- * - ash: Ash.
- * - econet: Acorn Econet.
- * - atmsvc: ATM SVCs.
- * - rds: RDS sockets.
- * - sna: Linux SNA Project.
- * - irda: IRDA sockets.
- * - pppox: PPPoX sockets.
- * - wanpipe: Wanpipe API sockets.
- * - llc: Linux LLC.
- * - ib: Native InfiniBand address.
- * - mpls: MPLS.
- * - can: Controller Area Network.
- * - tipc: TIPC sockets.
- * - bluetooth: Bluetooth sockets.
- * - iucb: IUCV sockets.
- * - rxrpc: RxRPC sockets.
- * - isdn: mISDN sockets.
- * - phonet: Phonet sockets.
- * - ieee802154: IEEE 802.15.4 sockets.
- * - caif: CAIF sockets.
- * - alg: Algorithm sockets.
- * - nfc: NFC sockets.
- * - vsock: vSockets.
- * - kcm: Kernel Connection Multiplexor.
- * - qipcrtr: Qualcomm IPC Router.
- * - smc: SMC sockets.
- * - max: The maximum value for known protocol families (this is not a protocol family).
+ * These are from the SOL_* macros.
+ *
+ * f_socket_level_*_e:
+ * - aal: ATM Adaption Layer (packet level).
+ * - alg: Alg.
+ * - atm: ATM layer (cell level).
+ * - bluetooth: Bluetooth.
+ * - caif: Caif.
+ * - dccp: Dccp.
+ * - decnet: Decnet.
+ * - irda: Irda.
+ * - iucv: Iucv.
+ * - kcm: Kcm.
+ * - llc: Llc.
+ * - netbeui: Netbeui.
+ * - netlink: Netlink.
+ * - nfc: Nfc.
+ * - packet: Packet.
+ * - pnpipe: Pnpipe.
+ * - ppol2tp: Ppol2tp.
+ * - raw: Raw.
+ * - rds: Rds.
+ * - rxrpc: Rxrpc.
+ * - tipc: Tipc.
+ * - tls: Tls.
+ * - x25: X25.
*/
-#ifndef _di_f_socket_protocol_family_e_
+#ifndef _di_f_socket_level_e_
enum {
- f_socket_protocol_family_unspecified_e = PF_UNSPEC,
- f_socket_protocol_family_local_e = PF_LOCAL,
- f_socket_protocol_family_inet_e = PF_INET,
- f_socket_protocol_family_ax25_e = PF_AX25,
- f_socket_protocol_family_ipx_e = PF_IPX,
- f_socket_protocol_family_appletalk_e = PF_APPLETALK,
- f_socket_protocol_family_netrom_e = PF_NETROM,
- f_socket_protocol_family_bridge_e = PF_BRIDGE,
- f_socket_protocol_family_atmpvc_e = PF_ATMPVC,
- f_socket_protocol_family_x25_e = PF_X25,
- f_socket_protocol_family_inet6_e = PF_INET6,
- f_socket_protocol_family_rose_e = PF_ROSE,
- f_socket_protocol_family_decnet_e = PF_DECnet,
- f_socket_protocol_family_netbeui_e = PF_NETBEUI,
- f_socket_protocol_family_security_e = PF_SECURITY,
- f_socket_protocol_family_key_e = PF_KEY,
- f_socket_protocol_family_netlink_e = PF_NETLINK,
- f_socket_protocol_family_packet_e = PF_PACKET,
- f_socket_protocol_family_ash_e = PF_ASH,
- f_socket_protocol_family_econet_e = PF_ECONET,
- f_socket_protocol_family_atmsvc_e = PF_ATMSVC,
- f_socket_protocol_family_rds_e = PF_RDS,
- f_socket_protocol_family_sna_e = PF_SNA,
- f_socket_protocol_family_irda_e = PF_IRDA,
- f_socket_protocol_family_pppox_e = PF_PPPOX,
- f_socket_protocol_family_wanpipe_e = PF_WANPIPE,
- f_socket_protocol_family_llc_e = PF_LLC,
- f_socket_protocol_family_ib_e = PF_IB,
- f_socket_protocol_family_mpls_e = PF_MPLS,
- f_socket_protocol_family_can_e = PF_CAN,
- f_socket_protocol_family_tipc_e = PF_TIPC,
- f_socket_protocol_family_bluetooth_e = PF_BLUETOOTH,
- f_socket_protocol_family_iucb_e = PF_IUCV,
- f_socket_protocol_family_rxrpc_e = PF_RXRPC,
- f_socket_protocol_family_isdn_e = PF_ISDN,
- f_socket_protocol_family_phonet_e = PF_PHONET,
- f_socket_protocol_family_ieee802154_e = PF_IEEE802154,
- f_socket_protocol_family_caif_e = PF_CAIF,
- f_socket_protocol_family_alg_e = PF_ALG,
- f_socket_protocol_family_nfc_e = PF_NFC,
- f_socket_protocol_family_vsock_e = PF_VSOCK,
- f_socket_protocol_family_kcm_e = PF_KCM,
- f_socket_protocol_family_qipcrtr_e = PF_QIPCRTR,
- f_socket_protocol_family_smc_e = PF_SMC,
- f_socket_protocol_family_max_e = PF_MAX,
+ f_socket_level_aal_e = SOL_AAL,
+ f_socket_level_alg_e = SOL_ALG,
+ f_socket_level_atm_e = SOL_ATM,
+ f_socket_level_bluetooth_e = SOL_BLUETOOTH,
+ f_socket_level_caif_e = SOL_CAIF,
+ f_socket_level_dccp_e = SOL_DCCP,
+ f_socket_level_decnet_e = SOL_DECNET,
+ f_socket_level_irda_e = SOL_IRDA,
+ f_socket_level_iucv_e = SOL_IUCV,
+ f_socket_level_kcm_e = SOL_KCM,
+ f_socket_level_llc_e = SOL_LLC,
+ f_socket_level_netbeui_e = SOL_NETBEUI,
+ f_socket_level_netlink_e = SOL_NETLINK,
+ f_socket_level_nfc_e = SOL_NFC,
+ f_socket_level_packet_e = SOL_PACKET,
+ f_socket_level_pnpipe_e = SOL_PNPIPE,
+ f_socket_level_ppol2tp_e = SOL_PPPOL2TP,
+ f_socket_level_raw_e = SOL_RAW,
+ f_socket_level_rds_e = SOL_RDS,
+ f_socket_level_rxrpc_e = SOL_RXRPC,
+ f_socket_level_tipc_e = SOL_TIPC,
+ f_socket_level_tls_e = SOL_TLS,
+ f_socket_level_x25_e = SOL_X25,
};
-#endif // _di_f_socket_protocol_family_e_
+#endif // _di_f_socket_level_e_
+
+/**
+ * Socket Message Flags.
+ *
+ * These represent responses from socket messages (see recvmsg()).
+ *
+ * f_socket_message_flag_*_e:
+ * - error_queue: No data received but extended error from the socket error queue is received.
+ * - out_of_band: The message is expedited or out of band data is received.
+ * - record_end: End of record reached.
+ * - truncate: The data has been truncated due to lack of space in the buffer.
+ * - truncate_control: The control data has been truncated due to lack of space in the buffer.
+ */
+#ifndef _di_f_socket_message_flag_e_
+ enum {
+ f_socket_message_flag_error_queue_e = MSG_ERRQUEUE,
+ f_socket_message_flag_out_of_band_e = MSG_OOB,
+ f_socket_message_flag_record_end_e = MSG_EOR,
+ f_socket_message_flag_truncate_e = MSG_TRUNC,
+ f_socket_message_flag_truncate_control_e = MSG_CTRUNC,
+ };
+#endif // _di_f_socket_message_flag_e_
/**
* Socket Options.
#endif // _di_f_socket_option_e_
/**
- * Socket Flags.
+ * Socket protocol codes.
*
- * These are flags to pass to either socket receive or socket send functions.
+ * Disclaimer: This may be different from system to system depending on the libc and other factors.
*
- * f_socket_flag_*_e:
- * - close_on_exit: Set the close on exit flag for a UNIX socket.
- * - confirm: Inform the network layer that "forward process" happened.
- * - error_queue: Designate that queue errors should be received from the socket error queue.
- * - more: Designate that there is more data to send.
- * - out_of_band: Enable receiving out of band data.
- * - peek: Process data from the queue without popping it off the stack.
- * - record_end: Designate end of record, terminating a sequence.
- * - route_not: Do not use a gateway to send this packet.
- * - signal_not: Do not send SIGPIPE signal if remote end closed the connection in a stream oriented connection.
- * - truncate: Return real length of the packet even if it is truncated to fit into the buffer.
- * - wait_all: Block until the full request is satisfied.
- * - wait_not: Use non-blocking.
+ * f_socket_protocol_*_e:
+ * - ip: Internet Protocol and pseudo protocol number or IPv6 Hop by Hop Option (RFC1883).
+ * - ah: Authentication Header (RFC2402).
+ * - ax25: AX.25 Frames.
+ * - dccp: Datagram Congestion Control Prot. (RFC4340).
+ * - ddp: Datagram Delivery Protocol.
+ * - egp: Exterior Gateway Protocol
+ * - eigrp: Enhanced Interior Routing Protocol.
+ * - encap: Yet Another IP Encapsulation (RFC1241).
+ * - encryption: Any private encryption scheme.
+ * - esp: Encapsulated Security Payload (RFC2406).
+ * - etherip: Ethernet within IP Encapsulation (RFC3378).
+ * - fc: Fibre Channel.
+ * - ggp: Gateway-Gateway Protocol.
+ * - gre: General Routing Encapsulation.
+ * - hip: Host Identity Protocol.
+ * - hmp: Host Monitoring Protocol.
+ * - icmp: internet control message protocol.
+ * - idpr_cmtp: IDPR Control Message Transport.
+ * - idrp: Inter-Domain Routing Protocol.
+ * - igmp: Internet Group Management.
+ * - igp: Any private Interior Gateway Protocol.
+ * - ipcomp: IP Payload Compression Protocol.
+ * - ipencap: IP Encapsulated in IP.
+ * - ipip: IP within IP Encapsulation Protocol
+ * - ipv6: Internet Protocol Version 6.
+ * - ipv6_frag: Internet Protocol Version 6 Fragment Header.
+ * - ipv6_icmp: ICMP for IPv6.
+ * - ipv6_nonxt: No Next Header for IPv6.
+ * - ipv6_opts: Destination Options for IPv6.
+ * - ipv6_route: Internet Protocol Version 6 Routing Header.
+ * - isis: IS-IS over IPv4.
+ * - iso_tp4: ISO Transport Protocol class 4 (RFC905).
+ * - l2tp: Layer Two Tunneling Protocol (RFC2661).
+ * - manet: MANET Protocols (RFC5498).
+ * - mobility_header: Mobility Support for IPv6 (RFC3775).
+ * - mpls_in_ip: MPLS-in-IP (RFC4023).
+ * - ospf: Open Shortest Path First IGP.
+ * - pim: Protocol Independent Multicast.
+ * - pup: PARC Universal Packet.
+ * - rdp: Reliable Datagram Protocol.
+ * - rohc: Robust Header Compression.
+ * - rspf: Radio Shortest Path First.
+ * - rsvp: Reservation Protocol.
+ * - sctp: Stream Control Transmission Protocol.
+ * - shim6: Shim6 Protocol (RFC5533).
+ * - skip: SKIP.
+ * - st: ST datagram mode.
+ * - tcp: Transmission Control Protocol
+ * - udp: User Datagram Protocol.
+ * - udplite: UDP-Lite (RFC3828).
+ * - vmtp: Versatile Message Transport.
+ * - vrrp: Virtual Router Redundancy Protocol (RFC5798).
+ * - wesp: Wrapped Encapsulating Security Payload.
+ * - xns_idp: Xerox NS IDP.
+ * - xtp: Xpress Transfer Protocol.
*/
-#ifndef _di_f_socket_flag_e_
+#ifndef _di_f_socket_protocol_e_
enum {
- f_socket_flag_close_on_exit_e = MSG_CMSG_CLOEXEC,
- f_socket_flag_confirm_e = MSG_CONFIRM,
- f_socket_flag_error_queue_e = MSG_ERRQUEUE,
- f_socket_flag_more_e = MSG_MORE,
- f_socket_flag_out_of_band_e = MSG_OOB,
- f_socket_flag_peek_e = MSG_PEEK,
- f_socket_flag_record_end_e = MSG_EOR,
- f_socket_flag_route_not_e = MSG_DONTROUTE,
- f_socket_flag_signal_not_e = MSG_NOSIGNAL,
- f_socket_flag_truncate_e = MSG_TRUNC,
- f_socket_flag_wait_all_e = MSG_WAITALL,
- f_socket_flag_wait_not_e = MSG_DONTWAIT,
+ f_socket_protocol_ip = 0,
+ f_socket_protocol_ah = 51,
+ f_socket_protocol_ax25 = 93,
+ f_socket_protocol_dccp = 33,
+ f_socket_protocol_ddp = 37,
+ f_socket_protocol_egp = 8,
+ f_socket_protocol_eigrp = 88,
+ f_socket_protocol_encap = 98,
+ f_socket_protocol_encryption = 99,
+ f_socket_protocol_esp = 50,
+ f_socket_protocol_etherip = 97,
+ f_socket_protocol_fc = 133,
+ f_socket_protocol_ggp = 3,
+ f_socket_protocol_gre = 47,
+ f_socket_protocol_hip = 139,
+ f_socket_protocol_hmp = 20,
+ f_socket_protocol_icmp = 1,
+ f_socket_protocol_idpr_cmtp = 38,
+ f_socket_protocol_idrp = 45,
+ f_socket_protocol_igmp = 2,
+ f_socket_protocol_igp = 9,
+ f_socket_protocol_ipcomp = 108,
+ f_socket_protocol_ipencap = 4,
+ f_socket_protocol_ipip = 94,
+ f_socket_protocol_ipv6 = 41,
+ f_socket_protocol_ipv6_frag = 44,
+ f_socket_protocol_ipv6_icmp = 58,
+ f_socket_protocol_ipv6_nonxt = 59,
+ f_socket_protocol_ipv6_opts = 60,
+ f_socket_protocol_ipv6_route = 43,
+ f_socket_protocol_isis = 124,
+ f_socket_protocol_iso_tp4 = 29,
+ f_socket_protocol_l2tp = 115,
+ f_socket_protocol_manet = 138,
+ f_socket_protocol_mobility_header = 135,
+ f_socket_protocol_mpls_in_ip = 137,
+ f_socket_protocol_ospf = 89,
+ f_socket_protocol_pim = 103,
+ f_socket_protocol_pup = 12,
+ f_socket_protocol_rdp = 27,
+ f_socket_protocol_rohc = 142,
+ f_socket_protocol_rspf = 73,
+ f_socket_protocol_rsvp = 46,
+ f_socket_protocol_sctp = 132,
+ f_socket_protocol_shim6 = 140,
+ f_socket_protocol_skip = 57,
+ f_socket_protocol_st = 5,
+ f_socket_protocol_tcp = 6,
+ f_socket_protocol_udp = 17,
+ f_socket_protocol_udplite = 136,
+ f_socket_protocol_vmtp = 81,
+ f_socket_protocol_vrrp = 112,
+ f_socket_protocol_wesp = 141,
+ f_socket_protocol_xns_idp = 22,
+ f_socket_protocol_xtp = 36,
};
-#endif // _di_f_socket_flag_e_
+#endif // _di_f_socket_protocol_e_
/**
- * Socket Message Flags.
- *
- * These represent responses from socket messages (see recvmsg()).
+ * Socket protocol families, referred to as a domain.
*
- * f_socket_message_flag_*_e:
- * - error_queue: No data received but extended error from the socket error queue is received.
- * - out_of_band: The message is expedited or out of band data is received.
- * - record_end: End of record reached.
- * - truncate: The data has been truncated due to lack of space in the buffer.
- * - truncate_control: The control data has been truncated due to lack of space in the buffer.
+ * f_socket_protocol_family_*_e:
+ * - unspecified: No protocol family specified.
+ * - local: Localhost, pipes, Unix sockets, or file sockets (PF_LOCAL, PF_UNIX, PF_FILE).
+ * - inet: IP protocol family.
+ * - ax25: Amateur Radio AX.25.
+ * - ipx: Novell Internet Protocol.
+ * - appletalk: Appletalk DDP.
+ * - netrom: Amateur radio NetROM.
+ * - bridge: Multiprotocol bridge.
+ * - atmpvc: ATM PVCs.
+ * - x25: Reserved for X.25 project.
+ * - inet6: IP version 6.
+ * - rose: Amateur Radio X.25 PLP.
+ * - decnet: Reserved for DECnet project.
+ * - netbeui: Reserved for 802.2LLC project.
+ * - security: Security callback pseudo AF.
+ * - key: PF_KEY key management API.
+ * - netlink: Netlink and BSD (PF_NETLINK and PF_ROUTE).
+ * - packet: Packet family.
+ * - ash: Ash.
+ * - econet: Acorn Econet.
+ * - atmsvc: ATM SVCs.
+ * - rds: RDS sockets.
+ * - sna: Linux SNA Project.
+ * - irda: IRDA sockets.
+ * - pppox: PPPoX sockets.
+ * - wanpipe: Wanpipe API sockets.
+ * - llc: Linux LLC.
+ * - ib: Native InfiniBand address.
+ * - mpls: MPLS.
+ * - can: Controller Area Network.
+ * - tipc: TIPC sockets.
+ * - bluetooth: Bluetooth sockets.
+ * - iucb: IUCV sockets.
+ * - rxrpc: RxRPC sockets.
+ * - isdn: mISDN sockets.
+ * - phonet: Phonet sockets.
+ * - ieee802154: IEEE 802.15.4 sockets.
+ * - caif: CAIF sockets.
+ * - alg: Algorithm sockets.
+ * - nfc: NFC sockets.
+ * - vsock: vSockets.
+ * - kcm: Kernel Connection Multiplexor.
+ * - qipcrtr: Qualcomm IPC Router.
+ * - smc: SMC sockets.
+ * - max: The maximum value for known protocol families (this is not a protocol family).
*/
-#ifndef _di_f_socket_message_flag_e_
+#ifndef _di_f_socket_protocol_family_e_
enum {
- f_socket_message_flag_error_queue_e = MSG_ERRQUEUE,
- f_socket_message_flag_out_of_band_e = MSG_OOB,
- f_socket_message_flag_record_end_e = MSG_EOR,
- f_socket_message_flag_truncate_e = MSG_TRUNC,
- f_socket_message_flag_truncate_control_e = MSG_CTRUNC,
+ f_socket_protocol_family_unspecified_e = PF_UNSPEC,
+ f_socket_protocol_family_alg_e = PF_ALG,
+ f_socket_protocol_family_appletalk_e = PF_APPLETALK,
+ f_socket_protocol_family_ash_e = PF_ASH,
+ f_socket_protocol_family_atmpvc_e = PF_ATMPVC,
+ f_socket_protocol_family_atmsvc_e = PF_ATMSVC,
+ f_socket_protocol_family_ax25_e = PF_AX25,
+ f_socket_protocol_family_bluetooth_e = PF_BLUETOOTH,
+ f_socket_protocol_family_bridge_e = PF_BRIDGE,
+ f_socket_protocol_family_caif_e = PF_CAIF,
+ f_socket_protocol_family_can_e = PF_CAN,
+ f_socket_protocol_family_decnet_e = PF_DECnet,
+ f_socket_protocol_family_econet_e = PF_ECONET,
+ f_socket_protocol_family_ib_e = PF_IB,
+ f_socket_protocol_family_ieee802154_e = PF_IEEE802154,
+ f_socket_protocol_family_inet_e = PF_INET,
+ f_socket_protocol_family_inet6_e = PF_INET6,
+ f_socket_protocol_family_ipx_e = PF_IPX,
+ f_socket_protocol_family_irda_e = PF_IRDA,
+ f_socket_protocol_family_isdn_e = PF_ISDN,
+ f_socket_protocol_family_iucb_e = PF_IUCV,
+ f_socket_protocol_family_kcm_e = PF_KCM,
+ f_socket_protocol_family_key_e = PF_KEY,
+ f_socket_protocol_family_llc_e = PF_LLC,
+ f_socket_protocol_family_local_e = PF_LOCAL,
+ f_socket_protocol_family_mpls_e = PF_MPLS,
+ f_socket_protocol_family_netbeui_e = PF_NETBEUI,
+ f_socket_protocol_family_netlink_e = PF_NETLINK,
+ f_socket_protocol_family_netrom_e = PF_NETROM,
+ f_socket_protocol_family_nfc_e = PF_NFC,
+ f_socket_protocol_family_packet_e = PF_PACKET,
+ f_socket_protocol_family_phonet_e = PF_PHONET,
+ f_socket_protocol_family_pppox_e = PF_PPPOX,
+ f_socket_protocol_family_qipcrtr_e = PF_QIPCRTR,
+ f_socket_protocol_family_rds_e = PF_RDS,
+ f_socket_protocol_family_rose_e = PF_ROSE,
+ f_socket_protocol_family_rxrpc_e = PF_RXRPC,
+ f_socket_protocol_family_security_e = PF_SECURITY,
+ f_socket_protocol_family_smc_e = PF_SMC,
+ f_socket_protocol_family_sna_e = PF_SNA,
+ f_socket_protocol_family_tipc_e = PF_TIPC,
+ f_socket_protocol_family_vsock_e = PF_VSOCK,
+ f_socket_protocol_family_wanpipe_e = PF_WANPIPE,
+ f_socket_protocol_family_x25_e = PF_X25,
+ f_socket_protocol_family_max_e = PF_MAX,
};
-#endif // _di_f_socket_message_flag_e_
+#endif // _di_f_socket_protocol_family_e_
/**
* Socket types.
#endif // _di_f_socket_type_e_
/**
+ * Provide a union to simplify using struct sockaddr in arrays.
+ *
+ * Managing different structures is not as practical.
+ * At the cost of resources, use the same space for all of these.
+ * This can then easily be used in a generic array that has a mixture of these.
+ *
+ * All of the properties may or may not be present, but inet4, inet6, and local are generally assumed to exist.
+ *
+ * Properties:
+ * - arp: Arp.
+ * - at: At.
+ * - ax25: Ax25.
+ * - dl: Dl.
+ * - eon: Eon.
+ * - inet4: Ipv4 internet network socket.
+ * - inet6: Ipv6 internet network socket..
+ * - ipx: Ipx.
+ * - iso: Iso.
+ * - local: Local (aka: Unix) socket (socket file or localhost).
+ * - ns: Ns.
+ * - x25: X25.
+ */
+#ifndef _di_f_socket_address_t_
+ typedef union {
+ struct sockaddr_in inet4;
+ struct sockaddr_in6 inet6;
+ struct sockaddr_un local;
+
+ #ifdef _en_support_socket_address_arp_
+ struct sockaddr_inarp arp;
+ #endif // _en_support_socket_address_arp_
+
+ #ifdef _en_support_socket_address_at_
+ struct sockaddr_at at;
+ #endif // _en_support_socket_address_at_
+
+ #ifdef _en_support_socket_address_ax25_
+ struct sockaddr_ax25 ax25;
+ #endif // _en_support_socket_address_ax25_
+
+ #ifdef _en_support_socket_address_dl_
+ struct sockaddr_dl dl;
+ #endif // _en_support_socket_address_dl_
+
+ #ifdef _en_support_socket_address_eon_
+ struct sockaddr_eon eon;
+ #endif // _en_support_socket_address_eon_
+
+ #ifdef _en_support_socket_address_ipx_
+ struct sockaddr_ipx ipx;
+ #endif // _en_support_socket_address_ipx_
+
+ #ifdef _en_support_socket_address_iso_
+ struct sockaddr_iso iso;
+ #endif // _en_support_socket_address_iso_
+
+ #ifdef _en_support_socket_address_ns_
+ struct sockaddr_ns ns;
+ #endif // _en_support_socket_address_ns_
+
+ #ifdef _en_support_socket_address_x25_
+ struct sockaddr_x25 x25;
+ #endif // _en_support_socket_address_x25_
+ } f_socket_address_t;
+
+ #define f_socket_address_t_initialize { 0 }
+
+ #define f_socket_address_initialize_inet4(value_inet4) { .inet4 = value_inet4 }
+ #define f_socket_address_initialize_inet6(value_inet6) { .inet6 = value_inet6 }
+ #define f_socket_address_initialize_local(value_local) { .local = value_local }
+ #define f_socket_address_initialize_arp(value_arp) { .arp = value_arp }
+ #define f_socket_address_initialize_at(value_at) { .at = value_at }
+ #define f_socket_address_initialize_ax25(value_ax25) { .ax25 = value_ax25 }
+ #define f_socket_address_initialize_dl(value_dl) { .dl = value_dl }
+ #define f_socket_address_initialize_eon(value_eon) { .local = value_eon }
+ #define f_socket_address_initialize_ipx(value_ipx) { .ipx = value_ipx }
+ #define f_socket_address_initialize_iso(value_iso) { .iso = value_iso }
+ #define f_socket_address_initialize_ns(value_ns) { .ns = value_ns }
+ #define f_socket_address_initialize_x25(value_x25) { .x25 = value_x25 }
+#endif // _di_f_socket_address_t_
+
+/**
* Commonly used socket related properties, loosely based off of f_file_t.
*
* id: File descriptor, with a value of -1 represents a closed file.
* size_write: The default number of 1-byte characters to read at a time and is often used for the write buffer size.
*
* length: The length of the socket.
- * address: Pointer to the socket address (stored as "struct sockaddr" but may represent other types such as "struct sockaddr_un" or "struct sockaddr_in").
+ * address: Tthe socket address.
*
* name: The name of the socket, if a name is given (for UNIX sockets this represents the path) (Must be a NULL terminated string).
+ *
+ * The clear and reset macros do not clear or reset the address (type f_socket_address_t) because the struct sockaddr is defined outside of the FLL project.
*/
#ifndef _di_f_socket_t_
typedef struct {
size_t size_write;
socklen_t length;
- struct sockaddr *address;
+ f_socket_address_t address;
f_string_static_t name;
} f_socket_t;
- #define f_socket_t_initialize { -1, 0, 0, 0, F_socket_default_read_size_d, F_socket_default_write_size_d, 0, 0, f_string_empty_s }
+ #define f_socket_t_initialize { -1, 0, 0, 0, F_socket_default_read_size_d, F_socket_default_write_size_d, 0, f_socket_address_t_initialize, f_string_empty_s }
#define macro_f_socket_t_initialize_1(address, length) { \
-1, \
file.size_read = 0; \
file.size_write = 0; \
file.length = 0; \
- file.address = 0; \
macro_f_string_static_t_clear(file);
#define macro_f_socket_t_reset(file) \
file.size_read = F_socket_default_read_size_d; \
file.size_write = F_socket_default_write_size_d; \
file.length = 0; \
- file.address = 0; \
macro_f_string_static_t_clear(file);
#endif // _di_f_socket_t_