networkd.h revision 851c9f82736c89d423b244a292e153ec7124d309
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! */
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poettering LIST_FIELDS(FdbEntry, static_fdb_entries);
6d0c65ffb4f82e8c6dceb453919b3db54343fc27Lennart Poettering DCHPClientIdentifier dhcp_client_identifier;
a6a4f528899b1dab47408733b4a423c66ea40f7aThomas Hindoe Paaboel Andersen LIST_HEAD(Route, static_routes);
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poettering char **domains, **dns, **ntp, **bind_carrier;
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poettering unsigned char scope;
6d0c65ffb4f82e8c6dceb453919b3db54343fc27Lennart Poettering unsigned char scope;
d57c365bf8f09fbcc649e00f7060ff30809f67c2Lennart Poetteringextern const char* const network_dirs[];
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringextern const sd_bus_vtable manager_vtable[];
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersenint manager_rtnl_enumerate_addresses(Manager *m);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint manager_send_changed(Manager *m, const char *property, ...) _sentinel_;
888943fc6246b2917168fff59380b58b678ba157Lennart Poetteringint manager_address_pool_acquire(Manager *m, int family, unsigned prefixlen, union in_addr_union *found);
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom GundersenDEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersen#define _cleanup_manager_free_ _cleanup_(manager_freep)
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom GundersenDEFINE_TRIVIAL_CLEANUP_FUNC(Network*, network_free);
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersen#define _cleanup_network_free_ _cleanup_(network_freep)
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersenint network_get_by_name(Manager *manager, const char *name, Network **ret);
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersenint network_get(Manager *manager, struct udev_device *device,
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersen const char *ifname, const struct ether_addr *mac,
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersenint network_apply(Manager *manager, Network *network, Link *link);
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersenint config_parse_netdev(const char *unit, const char *filename, unsigned line,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
69fb1176c403e437c4fba763ba242b540c73898fLennart Poetteringint config_parse_domains(const char *unit,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_tunnel_address(const char *unit,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_vxlan_group_address(const char *unit,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint network_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint network_object_find(sd_bus *bus, const char *path, const char *interface, void *userdata, void **found, sd_bus_error *error);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenconst struct ConfigPerfItem* network_network_gperf_lookup(const char *key, unsigned length);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint route_new_static(Network *network, unsigned section, Route **ret);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint route_new_dynamic(Route **ret, unsigned char rtm_protocol);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint route_configure(Route *route, Link *link, sd_rtnl_message_handler_t callback);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint route_drop(Route *route, Link *link, sd_rtnl_message_handler_t callback);
c09da72900b03fcddade06643f24c6357f3e0482Tom GundersenDEFINE_TRIVIAL_CLEANUP_FUNC(Route*, route_free);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen#define _cleanup_route_free_ _cleanup_(route_freep)
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_gateway(const char *unit, const char *filename, unsigned line,
144232a8e0ea77eed8c5a456832758681b5b3511Torstein Husebø const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_destination(const char *unit, const char *filename, unsigned line,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_route_priority(const char *unit, const char *filename, unsigned line,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_route_scope(const char *unit, const char *filename, unsigned line,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint address_new_static(Network *network, unsigned section, Address **ret);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint address_configure(Address *address, Link *link, sd_rtnl_message_handler_t callback);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint address_update(Address *address, Link *link, sd_rtnl_message_handler_t callback);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint address_drop(Address *address, Link *link, sd_rtnl_message_handler_t callback);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint address_establish(Address *address, Link *link);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint address_release(Address *address, Link *link);
c09da72900b03fcddade06643f24c6357f3e0482Tom GundersenDEFINE_TRIVIAL_CLEANUP_FUNC(Address*, address_free);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen#define _cleanup_address_free_ _cleanup_(address_freep)
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_address(const char *unit, const char *filename, unsigned line,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_broadcast(const char *unit, const char *filename, unsigned line,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_label(const char *unit, const char *filename, unsigned line,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen/* Forwarding database table. */
69fb1176c403e437c4fba763ba242b540c73898fLennart Poetteringint fdb_entry_configure(Link *const link, FdbEntry *const fdb_entry);
81fd1dd3a2cf4cc90a6898d562c9bb0fb238cbd7Tom Gundersenint fdb_entry_new_static(Network *const network, const unsigned section, FdbEntry **ret);
69fb1176c403e437c4fba763ba242b540c73898fLennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(FdbEntry*, fdb_entry_free);
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersen#define _cleanup_fdbentry_free_ _cleanup_(fdb_entry_freep)
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_fdb_hwaddr(const char *unit, const char *filename, unsigned line,
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_fdb_vlan_id(const char *unit, const char *filename, unsigned line,
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersen/* DHCP support */
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersenint config_parse_dhcp(const char *unit, const char *filename, unsigned line,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
69fb1176c403e437c4fba763ba242b540c73898fLennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint config_parse_dhcp_client_identifier(const char *unit, const char *filename, unsigned line,
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersen const char *section, unsigned section_line, const char *lvalue,
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poettering/* IPv4LL support (legacy) */
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poetteringint config_parse_ipv4ll(const char *unit, const char *filename, unsigned line,
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
b6a3ca6d876ab59b4f29ed67f54ef87005177906Tom Gundersen int ltype, const char *rvalue, void *data, void *userdata);
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poettering/* IPv6 support */
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poetteringint config_parse_ipv6token(const char *unit, const char *filename, unsigned line,
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poettering/* LLMNR support */
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poetteringconst char* llmnr_support_to_string(LLMNRSupport i) _const_;
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart PoetteringLLMNRSupport llmnr_support_from_string(const char *s) _pure_;
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poetteringint config_parse_llmnr(const char *unit, const char *filename, unsigned line,
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poettering const char *section, unsigned section_line, const char *lvalue,
1693a943ca581aca2beebb4c812ec6c9f17b8164Lennart Poettering int ltype, const char *rvalue, void *data, void *userdata);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersen/* Address Pool */
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint address_pool_new(Manager *m, AddressPool **ret, int family, const union in_addr_union *u, unsigned prefixlen);
c09da72900b03fcddade06643f24c6357f3e0482Tom Gundersenint address_pool_new_from_string(Manager *m, AddressPool **ret, int family, const char *p, unsigned prefixlen);
69fb1176c403e437c4fba763ba242b540c73898fLennart Poetteringint address_pool_acquire(AddressPool *p, unsigned prefixlen, union in_addr_union *found);
69fb1176c403e437c4fba763ba242b540c73898fLennart Poetteringconst char *address_family_boolean_to_string(AddressFamilyBoolean b) _const_;
69fb1176c403e437c4fba763ba242b540c73898fLennart PoetteringAddressFamilyBoolean address_family_boolean_from_string(const char *s) _const_;
ee8c45689526ca973407cbb77bce7b96a062c40bLennart 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);
1d050e1e0a7082e23ee9b31fa0b819cb332b3444Lennart Poettering/* Opeartional State */
ee8c45689526ca973407cbb77bce7b96a062c40bLennart Poetteringconst char* link_operstate_to_string(LinkOperationalState s) _const_;