csnet
|
Go to the source code of this file.
Data Structures | |
struct | scion_path_interface |
An interface of an AS in a SCION path. More... | |
struct | scion_geo_coordinates |
The geographic location of an AS. More... | |
struct | scion_path_metadata |
The metadata of a SCION path. More... | |
struct | scion_path_predicate |
A path predicate. More... | |
struct | scion_path_comparator |
A path comparator. More... | |
struct | scion_policy |
struct | scion_scmp_echo |
Macros | |
#define | SCION_SO_DEBUG 200 |
#define | SCION_FETCH_OPT_DEBUG 1 |
#define | SCION_IA_STRLEN 21 |
#define | SCION_PATH_METADATA_LATENCY_IS_UNSET(latency) (latency.tv_sec == 0 && latency.tv_usec == -1) |
#define | SCION_PATH_METADATA_BANDWIDTH_IS_UNSET(bandwidth) (bandwidth == 0) |
#define | SCION_PATH_METADATA_GEO_IS_UNSET(geo) (geo.latitude == NAN && geo.longitude == NAN && geo.address == NULL) |
#define | SCION_PATH_METADATA_INTERNAL_HOPS_IS_UNSET(internal_hops) (internal_hops == 0) |
Typedefs | |
typedef uint64_t | scion_ia |
typedef uint64_t | scion_ifid |
typedef bool(* | scion_path_predicate_fn) (struct scion_path *path, void *ctx) |
typedef int(* | scion_path_comparator_fn) (struct scion_path *path_one, struct scion_path *path_two, void *ctx) |
typedef void(* | scion_policy_fn) (struct scion_path_collection *paths, void *ctx) |
typedef void | scion_socket_scmp_error_cb(uint8_t *buf, size_t size, void *ctx) |
Functions | |
char * | scion_strerror (int err) |
int | scion_ia_parse (const char *str, size_t len, scion_ia *ia) |
int | scion_ia_str (scion_ia ia, char *buf, size_t buflen) |
void | scion_ia_print (scion_ia ia) |
int | scion_topology_from_file (struct scion_topology **topology, const char *path) |
scion_ia | scion_topology_get_local_ia (struct scion_topology *topo) |
void | scion_topology_free (struct scion_topology *topo) |
int | scion_bootstrap (const char *topology_output_path) |
int | scion_network (struct scion_network **net, struct scion_topology *topology) |
void | scion_network_free (struct scion_network *net) |
enum scion_addr_family | scion_network_get_local_addr_family (struct scion_network *net) |
int | scion_path_reverse (struct scion_path *path) |
size_t | scion_path_get_numhops (const struct scion_path *path) |
void | scion_path_free (struct scion_path *path) |
const struct scion_path_metadata * | scion_path_get_metadata (const struct scion_path *path) |
void | scion_path_print (const struct scion_path *path) |
void | scion_path_print_metadata (const struct scion_path *path) |
void | scion_path_collection_free (struct scion_path_collection *paths) |
struct scion_path * | scion_path_collection_find (struct scion_path_collection *paths, struct scion_path_predicate predicate) |
struct scion_path * | scion_path_collection_pop (struct scion_path_collection *paths) |
struct scion_path * | scion_path_collection_first (struct scion_path_collection *paths) |
void | scion_path_collection_sort (struct scion_path_collection *paths, struct scion_path_comparator comparator) |
void | scion_path_collection_filter (struct scion_path_collection *paths, struct scion_path_predicate predicate) |
size_t | scion_path_collection_size (struct scion_path_collection *paths) |
struct scion_path ** | scion_path_collection_as_array (struct scion_path_collection *paths, size_t *len) |
void | scion_path_collection_print (struct scion_path_collection *paths) |
int | scion_path_collection_fetch (struct scion_network *network, scion_ia dst, uint opt, struct scion_path_collection **paths) |
struct scion_policy | scion_policy_min_mtu (uint32_t *mtu) |
int | scion_socket (struct scion_socket **scion_sock, enum scion_addr_family addr_family, enum scion_proto protocol, struct scion_network *network) |
int | scion_bind (struct scion_socket *scion_sock, const struct sockaddr *addr, socklen_t addrlen) |
int | scion_connect (struct scion_socket *scion_sock, const struct sockaddr *addr, socklen_t addrlen, scion_ia ia) |
ssize_t | scion_send (struct scion_socket *scion_sock, const void *buf, size_t size, int flags) |
ssize_t | scion_sendto (struct scion_socket *scion_sock, const void *buf, size_t size, int flags, const struct sockaddr *dst_addr, socklen_t addrlen, scion_ia dst_ia, struct scion_path *path) |
ssize_t | scion_recv (struct scion_socket *scion_sock, void *buf, size_t size, int flags) |
ssize_t | scion_recvfrom (struct scion_socket *scion_sock, void *buf, size_t size, int flags, struct sockaddr *src_addr, socklen_t *addrlen, scion_ia *src_ia, struct scion_path **path) |
int | scion_close (struct scion_socket *scion_sock) |
int | scion_getsockopt (struct scion_socket *scion_sock, int level, int optname, void *optval, socklen_t *optlen) |
int | scion_setsockopt (struct scion_socket *scion_sock, int level, int optname, const void *optval, socklen_t optlen) |
int | scion_getsockname (struct scion_socket *scion_sock, struct sockaddr *addr, socklen_t *addrlen, scion_ia *ia) |
int | scion_getsockfd (struct scion_socket *scion_sock, int *fd) |
int | scion_setsockerrcb (struct scion_socket *scion_sock, scion_socket_scmp_error_cb cb, void *ctx) |
int | scion_setsockpolicy (struct scion_socket *scion_sock, struct scion_policy policy) |
void | scion_addr_print (const struct sockaddr *addr, scion_ia ia) |
uint8_t | scion_scmp_get_type (const uint8_t *buf, uint16_t buf_len) |
uint8_t | scion_scmp_get_code (const uint8_t *buf, uint16_t buf_len) |
bool | scion_scmp_is_error (const uint8_t *buf, uint16_t buf_len) |
uint16_t | scion_scmp_echo_len (struct scion_scmp_echo *scmp_echo) |
int | scion_scmp_echo_serialize (const struct scion_scmp_echo *scmp_echo, uint8_t *buf, uint16_t buf_len) |
int | scion_scmp_echo_deserialize (const uint8_t *buf, uint16_t buf_len, struct scion_scmp_echo *scmp_echo) |
void | scion_scmp_echo_free_members (struct scion_scmp_echo *scmp_echo) |
Variables | |
const struct scion_policy | scion_policy_highest_mtu |
const struct scion_policy | scion_policy_least_hops |
const struct scion_policy | scion_policy_lowest_latency |
const struct scion_policy | scion_policy_highest_bandwidth |
The CSNET library.
#define SCION_IA_STRLEN 21 |
The maximum length a string representation of an IA may require (including the null terminator).
#define SCION_PATH_METADATA_LATENCY_IS_UNSET | ( | latency | ) | (latency.tv_sec == 0 && latency.tv_usec == -1) |
Returns true if the latency is unknown.
latency | The latency. |
#define SCION_PATH_METADATA_BANDWIDTH_IS_UNSET | ( | bandwidth | ) | (bandwidth == 0) |
Returns true if the bandwidth is unknown.
bandwidth | The bandwidth. |
#define SCION_PATH_METADATA_GEO_IS_UNSET | ( | geo | ) | (geo.latitude == NAN && geo.longitude == NAN && geo.address == NULL) |
Returns true if the geographical location is unknown.
geo | The geographical location. |
#define SCION_PATH_METADATA_INTERNAL_HOPS_IS_UNSET | ( | internal_hops | ) | (internal_hops == 0) |
Returns true if the number of internal hops is unknown.
internal_hops | The number of internal hops. |
typedef uint64_t scion_ia |
A fully qualified AS identifier called IA.
typedef uint64_t scion_ifid |
An interface identifier.
typedef bool(* scion_path_predicate_fn) (struct scion_path *path, void *ctx) |
A function that matches a path with a custom context.
path | The candidate path. |
ctx | The custom context. |
typedef int(* scion_path_comparator_fn) (struct scion_path *path_one, struct scion_path *path_two, void *ctx) |
A function that compares two paths with a custom context.
path_one | The first path. |
path_two | The second path. |
ctx | The custom context. |
typedef void(* scion_policy_fn) (struct scion_path_collection *paths, void *ctx) |
A function that implements the path selection policy by filtering and/or sorting the available paths contained in the path collection. The function must modify the path collection in-place. When sorting the paths, the most preferred path should be the first path.
[in,out] | paths | The path collection. |
[in] | ctx | The user-defined context that was provided when creating the policy. |
typedef void scion_socket_scmp_error_cb(uint8_t *buf, size_t size, void *ctx) |
A callback for SCMP error handling.
buf | The buffer containing the SCMP error message. |
size | The size of the buffer. |
ctx | The context that was provided when setting up the callback. |
enum scion_error |
Possible error codes returned by the CSNET library.
Errors codes smaller than -200 are internal error codes.
Enumerator | |
---|---|
SCION_ERR_GENERIC | Something went wrong. |
SCION_ERR_MEM_ALLOC_FAIL | Memory allocation failed. |
SCION_ERR_NO_PATHS | No paths to the destination were found. |
SCION_ERR_BUF_TOO_SMALL | The buffer provided was not large enough. |
SCION_ERR_ADDR_FAMILY_UNKNOWN | Encountered an unsupported address family.
|
SCION_ERR_MAX_HDR_LEN_EXCEEDED | Could not send the packet because the maximum SCION header length was exceeded. |
SCION_ERR_FILE_NOT_FOUND | The file provided was not found. |
SCION_ERR_TOPOLOGY_INVALID | The topology is invalid. |
SCION_ERR_ADDR_FAMILY_MISMATCH | The provided address has an incompatible address family. This can happen when binding an address that has a different address family than the socket, or when sending/connecting to a host in the same AS that has a different address family than the socket. |
SCION_ERR_NETWORK_ADDR_FAMILY_MISMATCH | The provided network has a different address family than the socket. |
SCION_ERR_PROTO_UNKNOWN | The protocol is not supported.
|
SCION_ERR_NOT_CONNECTED | The socket is not connected yet. |
SCION_ERR_DST_MISMATCH | The path destination IA does not match the destination IA. |
SCION_ERR_INVALID_ISD_AS_STR | The provided IA string is invalid. |
SCION_ERR_WOULD_BLOCK | The receive operation is in non-blocking mode and there is nothing to receive. |
SCION_ERR_ADDR_INVALID | The provided address is invalid. |
SCION_ERR_ALREADY_BOUND | The socket is already bound. |
SCION_ERR_FLAG_NOT_IMPLEMENTED | The flag is not implemented by the library. |
SCION_ERR_FLAG_NOT_SUPPORTED | The flag is not supported by the OS. |
SCION_ERR_SEND_FAIL | Encountered an unexpected error when sending packets. |
SCION_ERR_RECV_FAIL | Encountered an unexpected error when receiving packets. |
SCION_ERR_ADDR_IN_USE | The address is already in use.
|
SCION_ERR_ADDR_NOT_AVAILABLE | The address is not available.
|
SCION_ERR_OUTPUT_QUEUE_FULL | The socket output queue is already full.
|
SCION_ERR_SOCK_OPT_INVALID | The provided socket option is invalid. |
SCION_ERR_ADDR_BUF_TOO_SMALL | The provided address buffer is too small. |
SCION_ERR_PATH_EXPIRED | The path has expired and needs to be refreshed. |
SCION_ERR_NOT_BOUND | The socket is not bound. |
SCION_ERR_NETWORK_UNKNOWN | Operation cannot be performed with a networkless socket. |
SCION_ERR_MSG_TOO_LARGE | The message is too large. |
SCION_ERR_SRC_ADDR_UNKNOWN | The source address of the socket could not automatically be determined. It has to be provided by explicitly binding the socket to a non-wildcard address.
|
SCION_ERR_BOOTSTRAPPING_FAIL | The bootstrapping process failed. Make sure the network is configured correctly. |
enum scion_addr_family |
enum scion_proto |
enum scion_link_type |
enum scion_scmp_echo_type |
char * scion_strerror | ( | int | err | ) |
Returns the string representation of an error.
err | A SCION error. |
int scion_ia_parse | ( | const char * | str, |
size_t | len, | ||
scion_ia * | ia | ||
) |
Parses an IA string.
[in] | str | The string. |
[in] | len | The length of the string (without NULL terminator). |
[out] | ia | The resulting IA. |
int scion_ia_str | ( | scion_ia | ia, |
char * | buf, | ||
size_t | buflen | ||
) |
Gets the string representation of an IA.
[in] | ia | The IA. |
[in,out] | buf | The buffer in which the string is stored. |
[in] | buflen | The length of the buffer. |
void scion_ia_print | ( | scion_ia | ia | ) |
Prints an IA to stdout.
[in] | ia | The IA. |
int scion_topology_from_file | ( | struct scion_topology ** | topology, |
const char * | path | ||
) |
Initializes a topology from a file.
[out] | topology | The resulting topology. |
[in] | path | The path of the topology file. |
scion_ia scion_topology_get_local_ia | ( | struct scion_topology * | topo | ) |
Gets the IA from the topology.
[in] | topo | The topology. |
void scion_topology_free | ( | struct scion_topology * | topo | ) |
Frees a topology.
[in] | topo | The topology to free. |
int scion_bootstrap | ( | const char * | topology_output_path | ) |
Tries to automatically bootstrap the topology and store it.
[in] | topology_output_path | The path used to store the topology file. |
int scion_network | ( | struct scion_network ** | net, |
struct scion_topology * | topology | ||
) |
Initializes a network with a topology.
[out] | net | The resulting network. |
[in] | topology | The topology of the network. |
void scion_network_free | ( | struct scion_network * | net | ) |
Frees a network.
[in] | net | The network to free. |
enum scion_addr_family scion_network_get_local_addr_family | ( | struct scion_network * | net | ) |
Gets the local address family of a network.
[in] | net | The network. |
int scion_path_reverse | ( | struct scion_path * | path | ) |
Reverses a path.
[in,out] | path | The path to reverse. |
size_t scion_path_get_numhops | ( | const struct scion_path * | path | ) |
Gets the number of hops of a path.
[in] | path | The path. |
void scion_path_free | ( | struct scion_path * | path | ) |
Frees a path.
[in] | path | The path to free. |
const struct scion_path_metadata * scion_path_get_metadata | ( | const struct scion_path * | path | ) |
Gets the metadata of a path.
[in] | path | The path. |
void scion_path_print | ( | const struct scion_path * | path | ) |
Prints a path to stdout.
[in] | path | The path to print. |
void scion_path_print_metadata | ( | const struct scion_path * | path | ) |
Prints the metadata of a path.
[in] | path | The path. |
void scion_path_collection_free | ( | struct scion_path_collection * | paths | ) |
Frees a collection of paths, including the paths themselves.
[in] | paths | The path collection. |
struct scion_path * scion_path_collection_find | ( | struct scion_path_collection * | paths, |
struct scion_path_predicate | predicate | ||
) |
Finds the first path that matches the provided predicate.
[in] | paths | The path collection. |
[in] | predicate | The predicate. |
struct scion_path * scion_path_collection_pop | ( | struct scion_path_collection * | paths | ) |
Gets and removes the first element from a path collection.
[in] | paths | The path collection. |
struct scion_path * scion_path_collection_first | ( | struct scion_path_collection * | paths | ) |
Gets the first element of a path collection.
[in] | paths | The path collection. |
void scion_path_collection_sort | ( | struct scion_path_collection * | paths, |
struct scion_path_comparator | comparator | ||
) |
Sorts a path collection in-place with the provided comparator.
[in,out] | paths | The path collection. |
[in] | comparator | The comparator. |
void scion_path_collection_filter | ( | struct scion_path_collection * | paths, |
struct scion_path_predicate | predicate | ||
) |
Filters a path collection in-place with the provided predicate.
[in,out] | paths | The path collection. |
[in] | predicate | The predicate. |
size_t scion_path_collection_size | ( | struct scion_path_collection * | paths | ) |
Gets the number of paths in a path collection.
[in] | paths | The path collection. |
struct scion_path ** scion_path_collection_as_array | ( | struct scion_path_collection * | paths, |
size_t * | len | ||
) |
Creates an array representation of a path collection.
[in] | paths | The path collection. |
[out] | len | The length of the array. |
void scion_path_collection_print | ( | struct scion_path_collection * | paths | ) |
Prints a path collection to stdout.
[in] | paths | The path list to print. |
int scion_path_collection_fetch | ( | struct scion_network * | network, |
scion_ia | dst, | ||
uint | opt, | ||
struct scion_path_collection ** | paths | ||
) |
Fetches the paths from the local SCION network to the destination IA.
[in] | network | The local network. |
[in] | dst | The destination IA. |
[in] | opt | Optional path finding options. |
[out] | paths | The collection of paths found. |
struct scion_policy scion_policy_min_mtu | ( | uint32_t * | mtu | ) |
Returns a policy that ensures all paths have the provided minimum MTU.
[in] | mtu | The minimum MTU. |
int scion_socket | ( | struct scion_socket ** | scion_sock, |
enum scion_addr_family | addr_family, | ||
enum scion_proto | protocol, | ||
struct scion_network * | network | ||
) |
Initializes a SCION socket.
[out] | scion_sock | The resulting SCION socket. |
[in] | addr_family | The address family to use. |
[in] | protocol | The protocol to use. |
[in] | network | The network to use. If NULL, the socket is in networkless mode. Networkless sockets cannot be connected, must always be bound manually before sending and always need an explicit path when sending. |
int scion_bind | ( | struct scion_socket * | scion_sock, |
const struct sockaddr * | addr, | ||
socklen_t | addrlen | ||
) |
Binds a SCION socket to an address.
[in,out] | scion_sock | The socket to bind. |
[in] | addr | The address to bind. |
[in] | addrlen | The length of the address. |
int scion_connect | ( | struct scion_socket * | scion_sock, |
const struct sockaddr * | addr, | ||
socklen_t | addrlen, | ||
scion_ia | ia | ||
) |
Connects a SCION socket to an address.
[in,out] | scion_sock | The socket to connect. |
[in] | addr | The address to connect to. |
[in] | addrlen | The length of the address. |
[in] | ia | The IA to connect to. |
ssize_t scion_send | ( | struct scion_socket * | scion_sock, |
const void * | buf, | ||
size_t | size, | ||
int | flags | ||
) |
Sends a packet to the connected destination of the SCION socket.
[in,out] | scion_sock | The connected socket to use. |
[in] | buf | The data to send. |
[in] | size | The size of the data. |
[in] | flags | The send flags to use. Must be 0 if no flags should be used. |
ssize_t scion_sendto | ( | struct scion_socket * | scion_sock, |
const void * | buf, | ||
size_t | size, | ||
int | flags, | ||
const struct sockaddr * | dst_addr, | ||
socklen_t | addrlen, | ||
scion_ia | dst_ia, | ||
struct scion_path * | path | ||
) |
Sends a packet to a destination.
[in,out] | scion_sock | The socket. |
[in] | buf | The data to send. |
[in] | size | The size of the data. |
[in] | flags | The send flags to use. Must be 0 if no flags should be used. |
[in] | dst_addr | The destination address. If NULL, the connected destination address is used. |
[in] | addrlen | The length of the destination address. Must be 0 if dst_addr is NULL. |
[in] | dst_ia | The destination IA. Must be 0 if dst_addr is NULL. |
[in] | path | The path to use. If NULL, a suitable path is automatically used. |
ssize_t scion_recv | ( | struct scion_socket * | scion_sock, |
void * | buf, | ||
size_t | size, | ||
int | flags | ||
) |
Receives a packet on the SCION socket.
[in,out] | scion_sock | The socket. |
[out] | buf | The buffer to store the received packet. |
[in,out] | size | Must contain the size of the provided data buffer when calling. Contains the size of the data received on return. |
[in] | flags | The receive flags to use. Must be 0 if no flags should be used. |
ssize_t scion_recvfrom | ( | struct scion_socket * | scion_sock, |
void * | buf, | ||
size_t | size, | ||
int | flags, | ||
struct sockaddr * | src_addr, | ||
socklen_t * | addrlen, | ||
scion_ia * | src_ia, | ||
struct scion_path ** | path | ||
) |
Receives a packet on the SCION socket.
[in,out] | scion_sock | The socket. |
[in] | buf | The buffer to store the received packet. |
[in] | size | Must contain the size of the provided data buffer when calling. Contains the size of the data received on return. |
[in] | flags | The receive flags to use. Must be 0 if no flags should be used. |
[out] | src_addr | The sender address of the packet. If NULL, the path is not returned. |
[in,out] | addrlen | Must contain the size of the provided address buffer when calling. Contains the size of the sender address on return. |
[out] | src_ia | The sender IA. If NULL, the IA is not returned. |
[out] | path | The path the packet took. If NULL, the path is not returned. |
int scion_close | ( | struct scion_socket * | scion_sock | ) |
Closes a SCION socket.
[in,out] | scion_sock | The socket to close. |
int scion_getsockopt | ( | struct scion_socket * | scion_sock, |
int | level, | ||
int | optname, | ||
void * | optval, | ||
socklen_t * | optlen | ||
) |
Gets a SCION socket option.
[in] | scion_sock | The socket. |
[in] | level | The option level. |
[in] | optname | The option name. |
[out] | optval | The option value buffer. |
[in,out] | optlen | Must contain the size of the option value buffer when calling. Contains the effective size of the option value on return. |
int scion_setsockopt | ( | struct scion_socket * | scion_sock, |
int | level, | ||
int | optname, | ||
const void * | optval, | ||
socklen_t | optlen | ||
) |
Sets a SCION socket option.
[in,out] | scion_sock | The socket. |
[in] | level | The option level. |
[in] | optname | The option name. |
[in] | optval | The option value buffer. |
[in] | optlen | The option value buffer length. |
int scion_getsockname | ( | struct scion_socket * | scion_sock, |
struct sockaddr * | addr, | ||
socklen_t * | addrlen, | ||
scion_ia * | ia | ||
) |
Gets the address of a SCION socket.
[in] | scion_sock | The socket. |
[out] | addr | The address of the socket. If NULL, the address is not returned. |
[in,out] | addrlen | Must contain the size of the address buffer when calling. Contains the effective size of the address on return. |
[out] | ia | The IA of the socket. If NULL, the IA is not returned. |
int scion_getsockfd | ( | struct scion_socket * | scion_sock, |
int * | fd | ||
) |
Gets the file descriptor of the underlying system socket.
[in] | scion_sock | The socket. |
[out] | fd | The file descriptor of the underlying system socket. |
int scion_setsockerrcb | ( | struct scion_socket * | scion_sock, |
scion_socket_scmp_error_cb | cb, | ||
void * | ctx | ||
) |
Sets the SCMP error callback that is called when a SCMP error is received by the socket.
[in,out] | scion_sock | The socket. |
[in] | cb | The callback to use. |
[in] | ctx | The user-defined context that is passed to every invocation of the callback. Can be NULL. |
int scion_setsockpolicy | ( | struct scion_socket * | scion_sock, |
struct scion_policy | policy | ||
) |
Sets the path selection policy of a socket.
scion_sock | The socket. |
policy | The path selection policy to use. |
void scion_addr_print | ( | const struct sockaddr * | addr, |
scion_ia | ia | ||
) |
Prints a SCION address pair to stdout.
[in] | addr | The address. |
[in] | ia | The IA. |
uint8_t scion_scmp_get_type | ( | const uint8_t * | buf, |
uint16_t | buf_len | ||
) |
Gets the type of a SCMP message.
[in] | buf | The serialized SCMP message. |
[in] | buf_len | The length of the SCMP message. |
uint8_t scion_scmp_get_code | ( | const uint8_t * | buf, |
uint16_t | buf_len | ||
) |
Gets the code of a SCMP message.
[in] | buf | The serialized SCMP messsage. |
[in] | buf_len | The length of the SCMP message. |
bool scion_scmp_is_error | ( | const uint8_t * | buf, |
uint16_t | buf_len | ||
) |
Determines whether the SCMP message is an error message.
[in] | buf | The serialized SCMP message. |
[in] | buf_len | The length of the serialized SCMP message. |
uint16_t scion_scmp_echo_len | ( | struct scion_scmp_echo * | scmp_echo | ) |
Determines how large the serialized SCMP echo message will be.
[in] | scmp_echo | The SCMP echo message. |
int scion_scmp_echo_serialize | ( | const struct scion_scmp_echo * | scmp_echo, |
uint8_t * | buf, | ||
uint16_t | buf_len | ||
) |
Serializes an SCMP echo message.
[in] | scmp_echo | The SCMP echo message to serialize. |
[out] | buf | The serialized SCMP echo message. |
[in] | buf_len | The length of the serialized message. |
int scion_scmp_echo_deserialize | ( | const uint8_t * | buf, |
uint16_t | buf_len, | ||
struct scion_scmp_echo * | scmp_echo | ||
) |
Deserializes an SCMP echo message.
[in] | buf | The serialized SCMP echo message. |
[in] | buf_len | The length of the serialized message. |
[out] | scmp_echo | The SCMP echo message. |
void scion_scmp_echo_free_members | ( | struct scion_scmp_echo * | scmp_echo | ) |
Frees the intrenal memebers of a SCMP echo message.
[in] | scmp_echo | The SCMP echo message. |
|
extern |
A policy that prefers paths with high MTU.
|
extern |
A policy that prefers paths with few hops.
|
extern |
A policy that prefers paths with low latency.
|
extern |
A policy that prefers paths with high bandwidth.