networkd.h revision 85a8eeee36b57c1ab382b0225fa9a87525bbeee9
ea49840bfe8467a7d7bd4db27b1d4880a85511aberikabele/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
4ab980a06412fd86f52a6d054fb7e26de155c530erikabele This file is part of systemd.
4ab980a06412fd86f52a6d054fb7e26de155c530erikabele Copyright 2013 Tom Gundersen <teg@jklm.no>
5a58787efeb02a1c3f06569d019ad81fd2efa06end systemd is free software; you can redistribute it and/or modify it
5a58787efeb02a1c3f06569d019ad81fd2efa06end under the terms of the GNU Lesser General Public License as published by
5a58787efeb02a1c3f06569d019ad81fd2efa06end the Free Software Foundation; either version 2.1 of the License, or
5a58787efeb02a1c3f06569d019ad81fd2efa06end (at your option) any later version.
5a58787efeb02a1c3f06569d019ad81fd2efa06end systemd is distributed in the hope that it will be useful, but
5a58787efeb02a1c3f06569d019ad81fd2efa06end WITHOUT ANY WARRANTY; without even the implied warranty of
52fff662005b1866a3ff09bb6c902800c5cc6dedjerenkrantz MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5a58787efeb02a1c3f06569d019ad81fd2efa06end Lesser General Public License for more details.
5a58787efeb02a1c3f06569d019ad81fd2efa06end You should have received a copy of the GNU Lesser General Public License
4b5981e276e93df97c34e4da05ca5cf8bbd937dand along with systemd; If not, see <http://www.gnu.org/licenses/>.
5d7e5de2da57434c8e68c8fa49cbf6d70ee0f817slivetypedef enum DHCPSupport {
5a58787efeb02a1c3f06569d019ad81fd2efa06endtypedef enum LLMNRSupport {
bf380c59be3f235bde21f1c00098e09e3cf7e7aerpluem unsigned char prefixlen;
bf380c59be3f235bde21f1c00098e09e3cf7e7aerpluem unsigned char scope;
aee1f193a276866212922ae5072e3014db28582frpluem unsigned char flags;
aee1f193a276866212922ae5072e3014db28582frpluem unsigned char dst_prefixlen;
aee1f193a276866212922ae5072e3014db28582frpluem unsigned char scope;
4ab980a06412fd86f52a6d054fb7e26de155c530erikabeleextern const char* const network_dirs[];
5a58787efeb02a1c3f06569d019ad81fd2efa06end/* Manager */
aee1f193a276866212922ae5072e3014db28582frpluemint manager_address_pool_acquire(Manager *m, int family, unsigned prefixlen, union in_addr_union *found);
aee1f193a276866212922ae5072e3014db28582frpluem#define _cleanup_manager_free_ _cleanup_(manager_freep)
aee1f193a276866212922ae5072e3014db28582frpluem/* Network */
aee1f193a276866212922ae5072e3014db28582frpluem#define _cleanup_network_free_ _cleanup_(network_freep)
aee1f193a276866212922ae5072e3014db28582frpluemint network_get(Manager *manager, struct udev_device *device,
aee1f193a276866212922ae5072e3014db28582frpluemint network_apply(Manager *manager, Network *network, Link *link);
4ab980a06412fd86f52a6d054fb7e26de155c530erikabeleint config_parse_netdev(const char *unit, const char *filename, unsigned line,
aee1f193a276866212922ae5072e3014db28582frpluem const char *section, unsigned section_line, const char *lvalue,
aee1f193a276866212922ae5072e3014db28582frpluem int ltype, const char *rvalue, void *data, void *userdata);
5a58787efeb02a1c3f06569d019ad81fd2efa06end const char *filename,
5a58787efeb02a1c3f06569d019ad81fd2efa06end const char *section,
4ab980a06412fd86f52a6d054fb7e26de155c530erikabele const char *lvalue,
aee1f193a276866212922ae5072e3014db28582frpluem const char *rvalue,
aee1f193a276866212922ae5072e3014db28582frpluem const char *section,
aee1f193a276866212922ae5072e3014db28582frpluem const char *lvalue,
aee1f193a276866212922ae5072e3014db28582frpluem const char *rvalue,
5a58787efeb02a1c3f06569d019ad81fd2efa06end const char *filename,
5a58787efeb02a1c3f06569d019ad81fd2efa06end const char *section,
4ab980a06412fd86f52a6d054fb7e26de155c530erikabele const char *lvalue,
aee1f193a276866212922ae5072e3014db28582frpluem const char *rvalue,
aee1f193a276866212922ae5072e3014db28582frpluemint config_parse_vxlan_group_address(const char *unit,
4ab980a06412fd86f52a6d054fb7e26de155c530erikabele const char *section,
4ab980a06412fd86f52a6d054fb7e26de155c530erikabele const char *lvalue,
5a58787efeb02a1c3f06569d019ad81fd2efa06end const char *rvalue,
aee1f193a276866212922ae5072e3014db28582frpluemconst struct ConfigPerfItem* network_network_gperf_lookup(const char *key, unsigned length);
aee1f193a276866212922ae5072e3014db28582frpluemint route_new_static(Network *network, unsigned section, Route **ret);
aee1f193a276866212922ae5072e3014db28582frpluemint route_new_dynamic(Route **ret, unsigned char rtm_protocol);
aee1f193a276866212922ae5072e3014db28582frpluemint route_configure(Route *route, Link *link, sd_rtnl_message_handler_t callback);
aee1f193a276866212922ae5072e3014db28582frpluemint route_drop(Route *route, Link *link, sd_rtnl_message_handler_t callback);
a3388213b2b4d46b356be205e38204e67b4304d8rbowenint config_parse_gateway(const char *unit, const char *filename, unsigned line,
a3388213b2b4d46b356be205e38204e67b4304d8rbowen const char *section, unsigned section_line, const char *lvalue,
a3388213b2b4d46b356be205e38204e67b4304d8rbowen int ltype, const char *rvalue, void *data, void *userdata);
aee1f193a276866212922ae5072e3014db28582frpluemint config_parse_destination(const char *unit, const char *filename, unsigned line,
aee1f193a276866212922ae5072e3014db28582frpluem const char *section, unsigned section_line, const char *lvalue,
aee1f193a276866212922ae5072e3014db28582frpluem int ltype, const char *rvalue, void *data, void *userdata);
aee1f193a276866212922ae5072e3014db28582frpluemint config_parse_route_priority(const char *unit, const char *filename, unsigned line,
a3388213b2b4d46b356be205e38204e67b4304d8rbowen const char *section, unsigned section_line, const char *lvalue,
a3388213b2b4d46b356be205e38204e67b4304d8rbowen int ltype, const char *rvalue, void *data, void *userdata);
5a58787efeb02a1c3f06569d019ad81fd2efa06end/* Address */
5a58787efeb02a1c3f06569d019ad81fd2efa06endint address_new_static(Network *network, unsigned section, Address **ret);
df321386f1d9ed17a3e5e6468807996a12890d50gryzorint address_configure(Address *address, Link *link, sd_rtnl_message_handler_t callback);
df321386f1d9ed17a3e5e6468807996a12890d50gryzorint address_update(Address *address, Link *link, sd_rtnl_message_handler_t callback);
df321386f1d9ed17a3e5e6468807996a12890d50gryzorint address_drop(Address *address, Link *link, sd_rtnl_message_handler_t callback);
df321386f1d9ed17a3e5e6468807996a12890d50gryzor#define _cleanup_address_free_ _cleanup_(address_freep)
df321386f1d9ed17a3e5e6468807996a12890d50gryzorint config_parse_address(const char *unit, const char *filename, unsigned line,
df321386f1d9ed17a3e5e6468807996a12890d50gryzor const char *section, unsigned section_line, const char *lvalue,
df321386f1d9ed17a3e5e6468807996a12890d50gryzor int ltype, const char *rvalue, void *data, void *userdata);
df321386f1d9ed17a3e5e6468807996a12890d50gryzorint config_parse_broadcast(const char *unit, const char *filename, unsigned line,
df321386f1d9ed17a3e5e6468807996a12890d50gryzor const char *section, unsigned section_line, const char *lvalue,
df321386f1d9ed17a3e5e6468807996a12890d50gryzor int ltype, const char *rvalue, void *data, void *userdata);
5a58787efeb02a1c3f06569d019ad81fd2efa06endint config_parse_label(const char *unit, const char *filename, unsigned line,
aee1f193a276866212922ae5072e3014db28582frpluem const char *section, unsigned section_line, const char *lvalue,
4ab980a06412fd86f52a6d054fb7e26de155c530erikabele int ltype, const char *rvalue, void *data, void *userdata);
aee1f193a276866212922ae5072e3014db28582frpluem/* DHCP support */
4ab980a06412fd86f52a6d054fb7e26de155c530erikabeleconst char* dhcp_support_to_string(DHCPSupport i) _const_;
aee1f193a276866212922ae5072e3014db28582frpluemDHCPSupport dhcp_support_from_string(const char *s) _pure_;
aee1f193a276866212922ae5072e3014db28582frpluemint config_parse_dhcp(const char *unit, const char *filename, unsigned line,
ea49840bfe8467a7d7bd4db27b1d4880a85511aberikabele const char *section, unsigned section_line, const char *lvalue,
ea49840bfe8467a7d7bd4db27b1d4880a85511aberikabele int ltype, const char *rvalue, void *data, void *userdata);
4ab980a06412fd86f52a6d054fb7e26de155c530erikabele/* LLMNR support */
aee1f193a276866212922ae5072e3014db28582frpluemconst char* llmnr_support_to_string(LLMNRSupport i) _const_;
aee1f193a276866212922ae5072e3014db28582frpluemLLMNRSupport llmnr_support_from_string(const char *s) _pure_;
aee1f193a276866212922ae5072e3014db28582frpluemint config_parse_llmnr(const char *unit, const char *filename, unsigned line,
5a58787efeb02a1c3f06569d019ad81fd2efa06end const char *section, unsigned section_line, const char *lvalue,
5a58787efeb02a1c3f06569d019ad81fd2efa06end int ltype, const char *rvalue, void *data, void *userdata);
aee1f193a276866212922ae5072e3014db28582frpluem/* Address Pool */
aee1f193a276866212922ae5072e3014db28582frpluemint address_pool_new(Manager *m, AddressPool **ret, int family, const union in_addr_union *u, unsigned prefixlen);
aee1f193a276866212922ae5072e3014db28582frpluemint address_pool_new_from_string(Manager *m, AddressPool **ret, int family, const char *p, unsigned prefixlen);
4ab980a06412fd86f52a6d054fb7e26de155c530erikabeleint address_pool_acquire(AddressPool *p, unsigned prefixlen, union in_addr_union *found);