networkd-link.h revision 21b80ad126c1aa43bd6d0e5a7ed3cc7c0f10efb0
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering This file is part of systemd.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering Copyright 2013 Tom Gundersen <teg@jklm.no>
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering systemd is free software; you can redistribute it and/or modify it
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering under the terms of the GNU Lesser General Public License as published by
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering the Free Software Foundation; either version 2.1 of the License, or
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering (at your option) any later version.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering systemd is distributed in the hope that it will be useful, but
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering Lesser General Public License for more details.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering You should have received a copy of the GNU Lesser General Public License
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_get(Manager *m, int ifindex, Link **ret);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_add(Manager *manager, sd_netlink_message *message, Link **ret);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_address_drop_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_route_drop_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_initialized(Link *link, struct udev_device *device);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_update(Link *link, sd_netlink_message *message);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_rtnl_process_address(sd_netlink *rtnl, sd_netlink_message *message, void *userdata);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_set_mtu(Link *link, uint32_t mtu);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_set_hostname(Link *link, const char *hostname);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_set_timezone(Link *link, const char *timezone);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringbool link_dhcp4_server_enabled(Link *link);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringconst char* link_state_to_string(LinkState s) _const_;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart PoetteringLinkState link_state_from_string(const char *s) _pure_;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_object_find(sd_bus *bus, const char *path, const char *interface, void *userdata, void **found, sd_bus_error *error);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint link_send_changed(Link *link, const char *property, ...) _sentinel_;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_unref);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define _cleanup_link_unref_ _cleanup_(link_unrefp)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* Macros which append INTERFACE= to the message */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_full(link, level, error, ...) \
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering _l ? log_object_internal(level, error, __FILE__, __LINE__, __func__, "INTERFACE=", _l->ifname, ##__VA_ARGS__) : \
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering log_internal(level, error, __FILE__, __LINE__, __func__, ##__VA_ARGS__); \
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_debug(link, ...) log_link_full(link, LOG_DEBUG, 0, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_info(link, ...) log_link_full(link, LOG_INFO, 0, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_notice(link, ...) log_link_full(link, LOG_NOTICE, 0, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_warning(link, ...) log_link_full(link, LOG_WARNING, 0, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_error(link, ...) log_link_full(link, LOG_ERR, 0, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_debug_errno(link, error, ...) log_link_full(link, LOG_DEBUG, error, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_info_errno(link, error, ...) log_link_full(link, LOG_INFO, error, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_notice_errno(link, error, ...) log_link_full(link, LOG_NOTICE, error, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_warning_errno(link, error, ...) log_link_full(link, LOG_WARNING, error, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define log_link_error_errno(link, error, ...) log_link_full(link, LOG_ERR, error, ##__VA_ARGS__)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define LOG_LINK_MESSAGE(link, fmt, ...) "MESSAGE=%s: " fmt, (link)->ifname, ##__VA_ARGS__
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define LOG_LINK_INTERFACE(link) "INTERFACE=%s", (link)->ifname
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering (be32toh((address).s_addr) >> 16) & 0xFFu, \
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering (be32toh((address).s_addr) >> 8) & 0xFFu, \