diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/ipxe/errfile.h | 1 | ||||
| -rw-r--r-- | src/include/ipxe/socket.h | 36 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/include/ipxe/errfile.h b/src/include/ipxe/errfile.h index 83675796c..c55107a9a 100644 --- a/src/include/ipxe/errfile.h +++ b/src/include/ipxe/errfile.h @@ -215,6 +215,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #define ERRFILE_mount ( ERRFILE_NET | 0x00350000 ) #define ERRFILE_oncrpc_iob ( ERRFILE_NET | 0x00360000 ) #define ERRFILE_neighbour ( ERRFILE_NET | 0x00370000 ) +#define ERRFILE_socket ( ERRFILE_NET | 0x00380000 ) #define ERRFILE_image ( ERRFILE_IMAGE | 0x00000000 ) #define ERRFILE_elf ( ERRFILE_IMAGE | 0x00010000 ) diff --git a/src/include/ipxe/socket.h b/src/include/ipxe/socket.h index 320dae4f1..48d7ae1a8 100644 --- a/src/include/ipxe/socket.h +++ b/src/include/ipxe/socket.h @@ -10,6 +10,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include <stdint.h> +#include <ipxe/tables.h> /** * @defgroup commtypes Communication semantics @@ -99,4 +100,39 @@ struct sockaddr { char pad[ SA_LEN - sizeof ( sa_family_t ) ]; } __attribute__ (( may_alias )); +/** + * Socket address converter + * + */ +struct sockaddr_converter { + /** Socket address family + * + * This is an AF_XXX constant. + */ + sa_family_t family; + /** Transcribe socket address + * + * @v sa Socket address + * @ret string Socket address string + */ + const char * ( * ntoa ) ( struct sockaddr *sa ); + /** Parse socket address + * + * @v string Socket address stringh + * @v sa Socket address to fill in + * @ret rc Return status code + */ + int ( * aton ) ( const char *string, struct sockaddr *sa ); +}; + +/** Socket address converter table */ +#define SOCKADDR_CONVERTERS \ + __table ( struct sockaddr_converter, "sockaddr_converters" ) + +/** Declare a socket address converter */ +#define __sockaddr_converter __table_entry ( SOCKADDR_CONVERTERS, 01 ) + +extern const char * sock_ntoa ( struct sockaddr *sa ); +extern int sock_aton ( const char *string, struct sockaddr *sa ); + #endif /* _IPXE_SOCKET_H */ |
