iPXE
socket.h File Reference

Socket addresses. More...

#include <stdint.h>
#include <ipxe/tables.h>

Go to the source code of this file.

Data Structures

struct  sockaddr
 Generalized socket address structure. More...
struct  sockaddr_converter
 Socket address converter. More...

Macros

#define TCP_SOCK_STREAM   0x1
#define SOCK_STREAM   tcp_sock_stream
#define UDP_SOCK_DGRAM   0x2
#define SOCK_DGRAM   udp_sock_dgram
#define PING_SOCK_ECHO   0x3
#define SOCK_ECHO   ping_sock_echo
#define AF_INET   1
 IPv4 Internet addresses.
#define AF_INET6   2
 IPv6 Internet addresses.
#define AF_FC   3
 Fibre Channel addresses.
#define SA_LEN   32
 Length of a struct sockaddr.
#define SOCKADDR_CONVERTERS    __table ( struct sockaddr_converter, "sockaddr_converters" )
 Socket address converter table.
#define __sockaddr_converter   __table_entry ( SOCKADDR_CONVERTERS, 01 )
 Declare a socket address converter.

Typedefs

typedef uint16_t sa_family_t
 A socket address family.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (PERMITTED)
static const char * socket_semantics_name (int semantics)
 Name communication semantics.
static const char * socket_family_name (int family)
 Name address family.
const char * sock_ntoa (struct sockaddr *sa)
 Transcribe socket address.
int sock_aton (const char *string, struct sockaddr *sa)
 Parse socket address.

Variables

int tcp_sock_stream
 Connection-based, reliable streams.
int udp_sock_dgram
 Connectionless, unreliable streams.
int ping_sock_echo
 Echo testing streams.

Detailed Description

Socket addresses.

Definition in file socket.h.

Macro Definition Documentation

◆ SA_LEN

#define SA_LEN   32

Length of a struct sockaddr.

Definition at line 89 of file socket.h.

◆ SOCKADDR_CONVERTERS

#define SOCKADDR_CONVERTERS    __table ( struct sockaddr_converter, "sockaddr_converters" )

Socket address converter table.

Definition at line 138 of file socket.h.

138#define SOCKADDR_CONVERTERS \
139 __table ( struct sockaddr_converter, "sockaddr_converters" )

Referenced by sock_aton(), and sock_ntoa().

◆ __sockaddr_converter

#define __sockaddr_converter   __table_entry ( SOCKADDR_CONVERTERS, 01 )

Declare a socket address converter.

Definition at line 142 of file socket.h.

Typedef Documentation

◆ sa_family_t

A socket address family.

Definition at line 86 of file socket.h.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

References tcp_sock_stream.

◆ socket_semantics_name()

const char * socket_semantics_name ( int semantics)
inlinestatic

Name communication semantics.

Parameters
semanticsCommunication semantics (e.g. SOCK_STREAM)
Return values
nameName of communication semantics

Definition at line 46 of file socket.h.

46 {
47 /* Cannot use a switch() because of the {TCP_UDP}_SOCK_XXX hack */
48 if ( semantics == SOCK_STREAM ) {
49 return "SOCK_STREAM";
50 } else if ( semantics == SOCK_DGRAM ) {
51 return "SOCK_DGRAM";
52 } else if ( semantics == SOCK_ECHO ) {
53 return "SOCK_ECHO";
54 } else {
55 return "SOCK_UNKNOWN";
56 }
57}
#define SOCK_STREAM
Definition socket.h:25
#define SOCK_DGRAM
Definition socket.h:30
#define SOCK_ECHO
Definition socket.h:35

References SOCK_DGRAM, SOCK_ECHO, and SOCK_STREAM.

Referenced by xfer_open_socket().

◆ socket_family_name()

const char * socket_family_name ( int family)
inlinestatic

Name address family.

Parameters
familyAddress family (e.g. AF_INET)
Return values
nameName of address family

Definition at line 76 of file socket.h.

76 {
77 switch ( family ) {
78 case AF_INET: return "AF_INET";
79 case AF_INET6: return "AF_INET6";
80 case AF_FC: return "AF_FC";
81 default: return "AF_UNKNOWN";
82 }
83}
#define AF_FC
Fibre Channel addresses.
Definition socket.h:66
#define AF_INET
IPv4 Internet addresses.
Definition socket.h:64
#define AF_INET6
IPv6 Internet addresses.
Definition socket.h:65

References AF_FC, AF_INET, and AF_INET6.

Referenced by efi_pxe_start(), and xfer_open_socket().

◆ sock_ntoa()

const char * sock_ntoa ( struct sockaddr * sa)
extern

Transcribe socket address.

Parameters
saSocket address
Return values
stringSocket address string

Definition at line 43 of file socket.c.

43 {
44 struct sockaddr_converter *converter;
45
47 if ( converter->family == sa->sa_family )
48 return converter->ntoa ( sa );
49 }
50 return NULL;
51}
#define NULL
NULL pointer (VOID *)
Definition Base.h:322
#define SOCKADDR_CONVERTERS
Socket address converter table.
Definition socket.h:138
Socket address converter.
Definition socket.h:116
sa_family_t family
Socket address family.
Definition socket.h:121
const char *(* ntoa)(struct sockaddr *sa)
Transcribe socket address.
Definition socket.h:127
struct sockaddr sa
Definition syslog.c:57
#define for_each_table_entry(pointer, table)
Iterate through all entries within a linker table.
Definition tables.h:386

References sockaddr_converter::family, for_each_table_entry, sockaddr_converter::ntoa, NULL, sa, and SOCKADDR_CONVERTERS.

Referenced by apply_dns_settings(), apply_syslog_settings(), dns_resolved(), dns_send_packet(), ping_callback(), pxe_tftp_open(), tcp_open(), tftp_uri(), and x509_check_ipaddress().

◆ sock_aton()

int sock_aton ( const char * string,
struct sockaddr * sa )
extern

Parse socket address.

Parameters
stringSocket address string
saSocket address to fill in
Return values
rcReturn status code

Definition at line 60 of file socket.c.

60 {
61 struct sockaddr_converter *converter;
62
64 if ( converter->aton ( string, sa ) == 0 ) {
65 sa->sa_family = converter->family;
66 return 0;
67 }
68 }
69 return -EINVAL;
70}
#define EINVAL
Invalid argument.
Definition errno.h:429
int(* aton)(const char *string, struct sockaddr *sa)
Parse socket address.
Definition socket.h:134

References sockaddr_converter::aton, EINVAL, sockaddr_converter::family, for_each_table_entry, sa, and SOCKADDR_CONVERTERS.

Referenced by numeric_resolv(), slam_parse_multicast_address(), and x509_check_ipaddress().