May 1, 2006 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

```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)