]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/shared/socket-netlink.h
Get rid of in_addr_port_from_string_auto() again
[thirdparty/systemd.git] / src / shared / socket-netlink.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 #include "sd-netlink.h"
5
6 #include "in-addr-util.h"
7 #include "macro.h"
8 #include "socket-util.h"
9
10 int resolve_ifname(sd_netlink **rtnl, const char *name);
11 int resolve_interface(sd_netlink **rtnl, const char *name);
12 int resolve_interface_or_warn(sd_netlink **rtnl, const char *name);
13
14 int make_socket_fd(int log_level, const char* address, int type, int flags);
15
16 int socket_address_parse(SocketAddress *a, const char *s);
17 int socket_address_parse_and_warn(SocketAddress *a, const char *s);
18 int socket_address_parse_netlink(SocketAddress *a, const char *s);
19
20 bool socket_address_is(const SocketAddress *a, const char *s, int type);
21 bool socket_address_is_netlink(const SocketAddress *a, const char *s);
22
23 int in_addr_port_ifindex_name_from_string_auto(
24 const char *s,
25 int *ret_family,
26 union in_addr_union *ret_address,
27 uint16_t *ret_port,
28 int *ret_ifindex,
29 char **ret_server_name);
30 static inline int in_addr_ifindex_name_from_string_auto(const char *s, int *family, union in_addr_union *ret, int *ifindex, char **server_name) {
31 return in_addr_port_ifindex_name_from_string_auto(s, family, ret, NULL, ifindex, server_name);
32 }
33 static inline int in_addr_ifindex_from_string_auto(const char *s, int *family, union in_addr_union *ret, int *ifindex) {
34 return in_addr_ifindex_name_from_string_auto(s, family, ret, ifindex, NULL);
35 }
36
37 struct in_addr_full {
38 int family;
39 union in_addr_union address;
40 uint16_t port;
41 int ifindex;
42 char *server_name;
43 char *cached_server_string; /* Should not be handled directly, but through in_addr_full_to_string(). */
44 };
45
46 struct in_addr_full *in_addr_full_free(struct in_addr_full *a);
47 DEFINE_TRIVIAL_CLEANUP_FUNC(struct in_addr_full*, in_addr_full_free);
48 int in_addr_full_new(int family, const union in_addr_union *a, uint16_t port, int ifindex, const char *server_name, struct in_addr_full **ret);
49 int in_addr_full_new_from_string(const char *s, struct in_addr_full **ret);
50 const char *in_addr_full_to_string(struct in_addr_full *a);