networkd.h revision a7d0ef446e5f28b37688743de22052abc8136a94
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering This file is part of systemd.
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering Copyright 2013 Tom Gundersen <teg@jklm.no>
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering systemd is free software; you can redistribute it and/or modify it
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering under the terms of the GNU Lesser General Public License as published by
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering the Free Software Foundation; either version 2.1 of the License, or
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering (at your option) any later version.
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering systemd is distributed in the hope that it will be useful, but
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering Lesser General Public License for more details.
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering You should have received a copy of the GNU Lesser General Public License
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering#define CACHE_INFO_INFINITY_LIFE_TIME 0xFFFFFFFFU
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering /* This is a bitmask, though it usually doesn't feel that way! */
6d0c65ffb4f82e8c6dceb453919b3db54343fc27Lennart Poettering /* The values map to the kernel's /proc/sys/net/ipv6/conf/xxx/use_tempaddr values */
6d0c65ffb4f82e8c6dceb453919b3db54343fc27Lennart Poettering IPV6_PRIVACY_EXTENSIONS_YES, /* aka prefer-temporary */
6d0c65ffb4f82e8c6dceb453919b3db54343fc27Lennart Poettering LIST_FIELDS(FdbEntry, static_fdb_entries);
6d0c65ffb4f82e8c6dceb453919b3db54343fc27Lennart Poettering DCHPClientIdentifier dhcp_client_identifier;
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poettering IPv6PrivacyExtensions ipv6_privacy_extensions;
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poettering char **domains, **dns, **ntp, **bind_carrier;
6d0c65ffb4f82e8c6dceb453919b3db54343fc27Lennart Poettering unsigned char scope;
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering unsigned char scope;
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringextern const char* const network_dirs[];
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringextern const sd_bus_vtable manager_vtable[];
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringint manager_rtnl_enumerate_links(Manager *m);
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringint manager_rtnl_enumerate_addresses(Manager *m);
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringint manager_send_changed(Manager *m, const char *property, ...) _sentinel_;
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringint manager_address_pool_acquire(Manager *m, int family, unsigned prefixlen, union in_addr_union *found);
ee8c45689526ca973407cbb77bce7b96a062c40bLennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering#define _cleanup_manager_free_ _cleanup_(manager_freep)
ee8c45689526ca973407cbb77bce7b96a062c40bLennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(Network*, network_free);
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering#define _cleanup_network_free_ _cleanup_(network_freep)
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint network_get_by_name(Manager *manager, const char *name, Network **ret);
2301cb9fdb774d0a1b3d8f5e95c5d358721ccacbLennart Poetteringint network_get(Manager *manager, struct udev_device *device,
ab1525bc2d92780b4dc64bc5b9cdb52594e2df7dLennart Poettering const char *ifname, const struct ether_addr *mac,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint network_apply(Manager *manager, Network *network, Link *link);
373d9f173f910d547159917401c4b1f84af85736Tom Gundersenint config_parse_netdev(const char *unit, const char *filename, unsigned line,
af5effc4220dab6c4c87a130bae7be441f6967caTom Gundersen const char *section, unsigned section_line, const char *lvalue,
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_domains(const char *unit,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_tunnel_address(const char *unit,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_vxlan_group_address(const char *unit,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringextern const sd_bus_vtable network_vtable[];
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint network_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint network_object_find(sd_bus *bus, const char *path, const char *interface, void *userdata, void **found, sd_bus_error *error);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringconst struct ConfigPerfItem* network_network_gperf_lookup(const char *key, unsigned length);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint route_new_static(Network *network, unsigned section, Route **ret);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint route_new_dynamic(Route **ret, unsigned char rtm_protocol);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint route_configure(Route *route, Link *link, sd_netlink_message_handler_t callback);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint route_drop(Route *route, Link *link, sd_netlink_message_handler_t callback);
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(Route*, route_free);
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poettering#define _cleanup_route_free_ _cleanup_(route_freep)
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poetteringint config_parse_gateway(const char *unit, const char *filename, unsigned line,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
d6731e4c7964ee2860d4f5abdb0b52acd7a66960Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
2301cb9fdb774d0a1b3d8f5e95c5d358721ccacbLennart Poetteringint config_parse_destination(const char *unit, const char *filename, unsigned line,
67272d157a35e5cda4e5c904eafdcc23d20541d1Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
67272d157a35e5cda4e5c904eafdcc23d20541d1Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
67272d157a35e5cda4e5c904eafdcc23d20541d1Tom Gundersenint config_parse_route_priority(const char *unit, const char *filename, unsigned line,
67272d157a35e5cda4e5c904eafdcc23d20541d1Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
1405434b6986d3c3d6ccaaa2e472bad843cbbfa1Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
1405434b6986d3c3d6ccaaa2e472bad843cbbfa1Lennart Poetteringint config_parse_route_scope(const char *unit, const char *filename, unsigned line,
1405434b6986d3c3d6ccaaa2e472bad843cbbfa1Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
1405434b6986d3c3d6ccaaa2e472bad843cbbfa1Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint address_new_static(Network *network, unsigned section, Address **ret);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint address_configure(Address *address, Link *link, sd_netlink_message_handler_t callback);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint address_update(Address *address, Link *link, sd_netlink_message_handler_t callback);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint address_drop(Address *address, Link *link, sd_netlink_message_handler_t callback);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint address_establish(Address *address, Link *link);
af5effc4220dab6c4c87a130bae7be441f6967caTom Gundersenint address_release(Address *address, Link *link);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringbool address_equal(Address *a1, Address *a2);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(Address*, address_free);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering#define _cleanup_address_free_ _cleanup_(address_freep)
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_address(const char *unit, const char *filename, unsigned line,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_broadcast(const char *unit, const char *filename, unsigned line,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
df3fb561b2df486a495a5f0bcc83168bd1860533Lennart Poetteringint config_parse_label(const char *unit, const char *filename, unsigned line,
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
af5effc4220dab6c4c87a130bae7be441f6967caTom Gundersen/* Forwarding database table. */
373d9f173f910d547159917401c4b1f84af85736Tom Gundersenint fdb_entry_configure(Link *const link, FdbEntry *const fdb_entry);
af5effc4220dab6c4c87a130bae7be441f6967caTom Gundersenint fdb_entry_new_static(Network *const network, const unsigned section, FdbEntry **ret);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(FdbEntry*, fdb_entry_free);
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poettering#define _cleanup_fdbentry_free_ _cleanup_(fdb_entry_freep)
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_fdb_hwaddr(const char *unit, const char *filename, unsigned line,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_fdb_vlan_id(const char *unit, const char *filename, unsigned line,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering/* DHCP support */
db73295accbec0c6513817f0a64a92018592bb26Lennart Poetteringint config_parse_dhcp(const char *unit, const char *filename, unsigned line,
db73295accbec0c6513817f0a64a92018592bb26Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
db73295accbec0c6513817f0a64a92018592bb26Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
db73295accbec0c6513817f0a64a92018592bb26Lennart Poetteringint config_parse_dhcp_client_identifier(const char *unit, const char *filename, unsigned line,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering/* IPv4LL support (legacy) */
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_ipv4ll(const char *unit, const char *filename, unsigned line,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
c627729fc49d59ffcecc09555a34d9dd139927ceLennart Poettering/* IPv6 support */
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_ipv6token(const char *unit, const char *filename, unsigned line,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poettering/* LLMNR support */
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringconst char* llmnr_support_to_string(LLMNRSupport i) _const_;
ee8c45689526ca973407cbb77bce7b96a062c40bLennart PoetteringLLMNRSupport llmnr_support_from_string(const char *s) _pure_;
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringint config_parse_llmnr(const char *unit, const char *filename, unsigned line,
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering const char *section, unsigned section_line, const char *lvalue,
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poettering/* Address Pool */
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poetteringint address_pool_new(Manager *m, AddressPool **ret, int family, const union in_addr_union *u, unsigned prefixlen);
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poetteringint address_pool_new_from_string(Manager *m, AddressPool **ret, int family, const char *p, unsigned prefixlen);
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poetteringint address_pool_acquire(AddressPool *p, unsigned prefixlen, union in_addr_union *found);
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poetteringconst char *address_family_boolean_to_string(AddressFamilyBoolean b) _const_;
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart PoetteringAddressFamilyBoolean address_family_boolean_from_string(const char *s) _const_;
9085f64a6694f2928c79fcce365edb1dca6937d4Lennart Poetteringint config_parse_address_family_boolean(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
c627729fc49d59ffcecc09555a34d9dd139927ceLennart Poettering/* IPForwarding parser */
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poetteringint config_parse_address_family_boolean_with_kernel(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poettering/* Operational State */
03cc0fd1431b82e59c11ae12a274c1f2df23169dLennart Poetteringconst char* link_operstate_to_string(LinkOperationalState s) _const_;
e92da1e5d0a3b38804e173af136ec7a076c7757eLennart PoetteringLinkOperationalState link_operstate_from_string(const char *s) _pure_;
e92da1e5d0a3b38804e173af136ec7a076c7757eLennart Poettering/* IPv6 privacy extensions support */
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poetteringconst char* ipv6_privacy_extensions_to_string(IPv6PrivacyExtensions i) _const_;
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart PoetteringIPv6PrivacyExtensions ipv6_privacy_extensions_from_string(const char *s) _pure_;
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poetteringint config_parse_ipv6_privacy_extensions(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
f7d68aa8c9430dfddee5f913f93b405a5d75723aLennart Poetteringint config_parse_hostname(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);