krb5_address(3)

πŸ“¦
version 7.8.0 Β· 3 versions
, in alpine 3.22, alpine 3.23, alpine 3.24, epel 10, epel 9, fedora 43, fedora 44

πŸ’– krb5_address β€” Heimdal Kerberos 5 address functions πŸ’–

okay so bestie, welcome to krb5_address(3), straight outta the Heimdal Kerberos 5 library ✨ this is the page where we deal with addresses β€” the whole sockaddr-to-krb5-address pipeline and back again. she's long, she's thorough, and she's lowkey iconic. let's get into it 🫢


πŸŽ€ SYNOPSIS πŸŽ€

✨ Functions ✨

here's the whole roster, no cap β€” every single one of them, in order, exactly as the library declares them:

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

twenty functions. twenty. she said "here's my whole personality" and honestly? respect πŸ’…

pro tip bestie: notice they all wear the same outfit β€” KRB5_LIB_FUNCTION and KRB5_LIB_CALL on the outside, and mostly krb5_error_code on the return. a couple of them switch it up though πŸ‘€ keep an eye out.

🌸 Detailed Description 🌸

(the plot thickens… and yes, this page keeps going, so hold that thought πŸ¦‹)

✨ FUNCTION DOCUMENTATION ✨

Okay bestie, buckle up because this is the function-by-function tea β˜•. Every single one, no skips. πŸ’…


🌸 krb5_addr2sockaddr 🌸

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_addr2sockaddr (krb5_context context, const krb5_address * addr,
                    struct sockaddr * sa, krb5_socklen_t * sa_size, int port)

krb5_addr2sockaddr sets the struct sockaddr sa 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. In case the sa is too small to fit the whole address, up to *sa_size will be stored, and then *sa_size will be set to the required length. πŸ”₯

Parameters

  • context β€” a Kerberos context πŸ’–
  • addr β€” the address to copy from
  • sa β€” the struct sockaddr that will be filled in
  • sa_size β€” pointer to length of sa, and after the call, it will contain the actual length of the address
  • port β€” set port in sa

Returns

Return an error code or 0. Will return KRB5_PROG_ATYPE_NOSUPP in case address type is not supported. 😭


krb5_address_compare

KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
krb5_address_compare (krb5_context context, const krb5_address * addr1,
                      const krb5_address * addr2)

krb5_address_compare compares the addresses addr1 and addr2. Returns TRUE if the two addresses are the same. πŸ‘‘

Parameters

  • context β€” a Kerberos context
  • addr1 β€” address to compare
  • addr2 β€” address to compare

Returns

Return TRUE if the addresses are the same, FALSE if not.


krb5_address_order

KRB5_LIB_FUNCTION int KRB5_LIB_CALL
krb5_address_order (krb5_context context, const krb5_address * addr1,
                    const krb5_address * addr2)

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. Behaves like memcmp(2). πŸ¦‹

Parameters

  • context β€” a Kerberos context
  • addr1 β€” krb5_address to compare
  • addr2 β€” krb5_address to compare

Returns

< 0 if address addr1 is 'less' than addr2. 0 if addr1 and addr2 are the same address, > 0 if addr2 is 'less' than addr1.


krb5_address_prefixlen_boundary

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_address_prefixlen_boundary (krb5_context context,
                                 const krb5_address * inaddr,
                                 unsigned long prefixlen,
                                 krb5_address * low, krb5_address * high)

Calculate the boundary addresses of inaddr/prefixlen and store them in low and high. ✨

Parameters

  • context β€” a Kerberos context
  • inaddr β€” address in prefixlen that the boundary searched
  • prefixlen β€” width of boundary
  • low β€” lowest address
  • high β€” highest address

Returns

Return an error code or 0.


KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
krb5_address_search (krb5_context context, const krb5_address * addr,
                     const krb5_addresses * addrlist)

krb5_address_search checks if the address addr is a member of the address set list addrlist. πŸ”

Parameters

  • context β€” a Kerberos context.
  • addr β€” address to search for.
  • addrlist β€” list of addresses to look in for addr.

Returns

Return an error code or 0.


krb5_anyaddr

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_anyaddr (krb5_context context, int af, struct sockaddr * sa,
              krb5_socklen_t * sa_size, int port)

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. πŸ’…

Parameters

  • context β€” a Kerberos context
  • af β€” address family
  • sa β€” sockaddr
  • sa_size β€” length of sa.
  • port β€” for to fill into sa.

Returns

Return an error code or 0.


krb5_append_addresses

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_append_addresses (krb5_context context, krb5_addresses * dest,
                       const krb5_addresses * source)

krb5_append_addresses adds the set of addresses in source to dest. While copying the addresses, duplicates are also sorted out. πŸŽ€

Parameters

  • context β€” a Kerberos context
  • dest β€” destination of copy operation
  • source β€” addresses that are going to be added to dest

Returns

Return an error code or 0.


krb5_copy_address

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_copy_address (krb5_context context, const krb5_address * inaddr,
                   krb5_address * outaddr)

krb5_copy_address copies the content of address inaddr to outaddr. 🌸

Parameters

  • context β€” a Kerberos context
  • inaddr β€” pointer to source address
  • outaddr β€” pointer to destination address

Returns

Return an error code or 0.


krb5_copy_addresses

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_copy_addresses (krb5_context context, const krb5_addresses * inaddr,
                     krb5_addresses * outaddr)

krb5_copy_addresses copies the content of addresses inaddr to outaddr. πŸ’–

Parameters

  • context β€” a Kerberos context
  • inaddr β€” pointer to source addresses
  • outaddr β€” pointer to destination addresses

Returns

Return an error code or 0.


krb5_free_address

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_free_address (krb5_context context, krb5_address * address)

krb5_free_address frees the data stored in the address that is allocated with any of the krb5_address functions. 🧚

Parameters

  • context β€” a Kerberos context
  • address β€” address to be freed.

Returns

Return an error code or 0.


krb5_free_addresses

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_free_addresses (krb5_context context, krb5_addresses * addresses)

krb5_free_addresses frees the data stored in the address that is allocated with any of the krb5_address functions. πŸ’€

Parameters

  • context β€” a Kerberos context
  • addresses β€” addresses to be freed.

Returns

Return an error code or 0.


krb5_h_addr2addr

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_h_addr2addr (krb5_context context, int af, const char * haddr,
                  krb5_address * addr)

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

Parameters

  • context β€” a Kerberos context
  • af β€” address family
  • haddr β€” host address from struct hostent.
  • addr β€” returned krb5_address.

Returns

Return an error code or 0.


krb5_h_addr2sockaddr

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_h_addr2sockaddr (krb5_context context, int af, const char * addr,
                      struct sockaddr * sa, krb5_socklen_t * sa_size,
                      int port)

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. πŸ”₯

Parameters

  • context β€” a Kerberos context
  • af β€” addresses
  • addr β€” address
  • sa β€” returned struct sockaddr
  • sa_size β€” size of sa
  • port β€” port to set in sa.

Returns

Return an error code or 0.


krb5_make_addrport

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_make_addrport (krb5_context context, krb5_address ** res,
                    const krb5_address * addr, int16_t port)

Create an address of type KRB5_ADDRESS_ADDRPORT from (addr, port). πŸ‘‘

Parameters

  • context β€” a Kerberos context
  • res β€” built address from addr/port
  • addr β€” address to use
  • port β€” port to use

Returns

Return an error code or 0.


krb5_max_sockaddr_size

KRB5_LIB_FUNCTION size_t KRB5_LIB_CALL
krb5_max_sockaddr_size (void)

krb5_max_sockaddr_size returns the max size of the struct sockaddr that the Kerberos library will return. πŸ’…

Returns

Return a size_t of the maximum struct sockaddr.


krb5_parse_address

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_parse_address (krb5_context context, const char * string,
                    krb5_addresses * addresses)

krb5_parse_address returns the resolved hostname in string to the krb5_addresses addresses. 🌐

Parameters

  • context β€” a Kerberos context
  • string
  • addresses

Returns

Return an error code or 0.


krb5_print_address

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_print_address (const krb5_address * addr, char * str, size_t len,
                    size_t * ret_len)

krb5_print_address prints the address in addr to the string str that has 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 NUL). πŸ–¨οΈ

Parameters

  • addr β€” address to be printed
  • str β€” pointer string to print the address into
  • len β€” length that will fit into area pointed to by str.
  • ret_len β€” return length the str.

Returns

Return an error code or 0.


krb5_sockaddr2address

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_sockaddr2address (krb5_context context, const struct sockaddr * sa,
                       krb5_address * addr)

krb5_sockaddr2address stores an address a struct sockaddr sa in the krb5_address addr. πŸ“¦

Parameters

  • context β€” a Kerberos context
  • sa β€” a struct sockaddr to extract the address from
  • addr β€” a Kerberos 5 address to store the address in.

Returns

Return an error code or 0.


krb5_sockaddr2port

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_sockaddr2port (krb5_context context, const struct sockaddr * sa,
                    int16_t * port)

krb5_sockaddr2port extracts a port (if possible) from a struct sockaddr. πŸ”Œ

Parameters

  • context β€” a Kerberos context
  • sa β€” a struct sockaddr to extract the port from
  • port β€” a pointer to an int16_t to store the port in.

Returns

Return an error code or 0. Will return KRB5_PROG_ATYPE_NOSUPP in case address type is not supported. 😭


krb5_sockaddr_uninteresting

KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
krb5_sockaddr_uninteresting (const struct sockaddr * sa)

krb5_sockaddr_uninteresting returns TRUE for all sa that the Kerberos library thinks are uninteresting. One example are link local addresses. πŸ™ˆ

Parameters

  • sa β€” pointer to struct sockaddr that might be interesting.

Returns

Return a non-zero for uninteresting addresses.


πŸ‘‘ AUTHOR πŸ‘‘

Generated automatically by Doxygen for Heimdal Kerberos 5 library from the source code. ✨


πŸ’– That's the whole vibe, bestie! This iconic page is from Version 7.8.0, dated Tue Nov 15 2022, and it's literally krb5_address(3). Bye! πŸ’–

πŸ“¦ where this page comes from