return 0;
}
-int in_addr_ifindex_to_string(int family, const union in_addr_union *u, int ifindex, char **ret) {
- _cleanup_free_ char *x = NULL;
- size_t l;
- int r;
-
- assert(u);
- assert(ret);
-
- /* Much like in_addr_to_string(), but optionally appends the zone interface index to the address, to properly
- * handle IPv6 link-local addresses. */
-
- if (family != AF_INET6)
- goto fallback;
- if (ifindex <= 0)
- goto fallback;
-
- r = in_addr_is_link_local(family, u);
- if (r < 0)
- return r;
- if (r == 0)
- goto fallback;
-
- l = INET6_ADDRSTRLEN + 1 + DECIMAL_STR_MAX(ifindex) + 1;
- x = new(char, l);
- if (!x)
- return -ENOMEM;
-
- errno = 0;
- if (!inet_ntop(family, u, x, l))
- return errno_or_else(EINVAL);
-
- sprintf(strchr(x, 0), "%%%i", ifindex);
-
- *ret = TAKE_PTR(x);
- return 0;
-
-fallback:
- return in_addr_to_string(family, u, ret);
-}
-
int in_addr_port_ifindex_name_to_string(int family, const union in_addr_union *u, uint16_t port, int ifindex, const char *server_name, char **ret) {
_cleanup_free_ char *ip_str = NULL, *x = NULL;
int r;
int in_addr_random_prefix(int family, union in_addr_union *u, unsigned prefixlen_fixed_part, unsigned prefixlen);
int in_addr_to_string(int family, const union in_addr_union *u, char **ret);
int in_addr_prefix_to_string(int family, const union in_addr_union *u, unsigned prefixlen, char **ret);
-int in_addr_ifindex_to_string(int family, const union in_addr_union *u, int ifindex, char **ret);
int in_addr_port_ifindex_name_to_string(int family, const union in_addr_union *u, uint16_t port, int ifindex, const char *server_name, char **ret);
+static inline int in_addr_ifindex_to_string(int family, const union in_addr_union *u, int ifindex, char **ret) {
+ return in_addr_port_ifindex_name_to_string(family, u, 0, ifindex, NULL, ret);
+}
int in_addr_from_string(int family, const char *s, union in_addr_union *ret);
int in_addr_from_string_auto(const char *s, int *ret_family, union in_addr_union *ret);