KRB5_ADDRESS(3)

NAME
krb5_address, krb5_addresses, krb5_sockaddr2address, krb5_sockaddr2port, krb5_addr2sockaddr, krb5_max_sockaddr_size, krb5_sockaddr_uninteresting, krb5_h_addr2sockaddr, krb5_h_addr2addr, krb5_anyaddr, krb5_print_address, krb5_parse_address, krb5_address_order, krb5_address_compare, krb5_address_search, krb5_free_address, krb5_free_addresses, krb5_copy_address, krb5_copy_addresses, krb5_append_addresses, krb5_make_addrport - mange addresses in Kerberos

LIBRARY
Kerberos 5 Library (libkrb5, -lkrb5)

SYNOPSIS
#include <krb5/krb5.h>

krb5_error_code
krb5_sockaddr2address(krb5_context context, const struct sockaddr *sa, krb5_address *addr);
krb5_error_code
krb5_sockaddr2port(krb5_context context, const struct sockaddr *sa, int16_t *port);
krb5_error_code
krb5_addr2sockaddr(krb5_context context, const krb5_address *addr, struct sockaddr *sa, krb5_socklen_t *sa_size, int port);
size_t
krb5_max_sockaddr_size(void);
krb5_boolean
krb5_sockaddr_uninteresting(const struct sockaddr *sa);
krb5_error_code
krb5_h_addr2sockaddr(krb5_context context, int af, const char *addr, struct sockaddr *sa, krb5_socklen_t *sa_size, int port);
krb5_error_code
krb5_h_addr2addr(krb5_context context, int af, const char *haddr, krb5_address *addr);
krb5_error_code
krb5_anyaddr(krb5_context context, int af, struct sockaddr *sa, krb5_socklen_t *sa_size, int port);
krb5_error_code
krb5_print_address(const krb5_address *addr, char *str, size_t len, size_t *ret_len);
krb5_error_code
krb5_parse_address(krb5_context context, const char *string, krb5_addresses *addresses);
int
krb5_address_order(krb5_context context, const krb5_address *addr1, const krb5_address *addr2);
krb5_boolean
krb5_address_compare(krb5_context context, const krb5_address *addr1, const krb5_address *addr2);
krb5_boolean
krb5_address_search(krb5_context context, const krb5_address *addr, const krb5_addresses *addrlist);
krb5_error_code
krb5_free_address(krb5_context context, krb5_address *address);
krb5_error_code
krb5_free_addresses(krb5_context context, krb5_addresses *addresses);
krb5_error_code
krb5_copy_address(krb5_context context, const krb5_address *inaddr, krb5_address *outaddr);
krb5_error_code
krb5_copy_addresses(krb5_context context, const krb5_addresses *inaddr, krb5_addresses *outaddr);
krb5_error_code
krb5_append_addresses(krb5_context context, krb5_addresses *dest, const krb5_addresses *source);
krb5_error_code
krb5_make_addrport(krb5_context context, krb5_address **res, const krb5_address *addr, int16_t port);

DESCRIPTION
The krb5_address structure holds a address that can be used in Kerberos API calls. There are help functions to set and extract address information of the address.

The krb5_addresses structure holds a set of krb5_address:es.

krb5_sockaddr2address() stores a address a struct sockaddr sa in the krb5_address addr.

krb5_sockaddr2port() extracts a port (if possible) from a struct sockaddr sa.

krb5_addr2sockaddr() sets the struct sockaddr sockaddr from addr and port. The argument sa_size should initially contain the size of the sa, and after the call, it will contain the actual length of the address.

krb5_max_sockaddr_size() returns the max size of the struct sockaddr that the Kerberos library will return.

krb5_sockaddr_uninteresting() returns TRUE for all sa that the kerberos library thinks are uninteresting. One example are link local addresses.

krb5_h_addr2sockaddr() initializes a struct sockaddr sa from af and the struct hostent (see gethostbyname(3)) h_addr_list component. The argument sa_size should initially contain the size of the sa, and after the call, it will contain the actual length of the address.

krb5_h_addr2addr() works like krb5_h_addr2sockaddr() with the exception that it operates on a krb5_address instead of a struct sockaddr.

krb5_anyaddr() fills in a struct sockaddr sa that can be used to bind(2) to. The argument sa_size should initially contain the size of the sa, and after the call, it will contain the actual length of the address.

krb5_print_address() prints the address in addr to the string string that have the length len. If ret_len is not NULL, it will be filled with the length of the string if size were unlimited (not including the final ‘\0’).

krb5_parse_address() Returns the resolved hostname in string to the krb5_addresses addresses.

krb5_address_order() compares the addresses addr1 and addr2 so that it can be used for sorting addresses. If the addresses are the same address krb5_address_order will return 0.

krb5_address_compare() compares the addresses addr1 and addr2. Returns TRUE if the two addresses are the same.

krb5_address_search() checks if the address addr is a member of the address set list addrlist.

krb5_free_address() frees the data stored in the address that is alloced with any of the krb5_address functions.

krb5_free_addresses() frees the data stored in the addresses that is alloced with any of the krb5_address functions.

krb5_copy_address() copies the content of address inaddr to outaddr.

krb5_copy_addresses() copies the content of the address list inaddr to outaddr.

krb5_append_addresses() adds the set of addresses in source to dest. While copying the addresses, duplicates are also sorted out.

krb5_make_addrport() allocates and creates an krb5_address in res of type KRB5_ADDRESS_ADDRPORT from (addr, port).

SEE ALSO
krb5(3), krb5.conf(5), kerberos(8)