/* *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------- Configuration, DBUS info & Flow -------- *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ps | grep systemd 1 root 13460 S {systemd} /sbin/init 68 root 6704 S /lib/systemd/systemd-journald 87 root 10224 S /lib/systemd/systemd-udevd 96 systemd- 12936 S /lib/systemd/systemd-timesyncd 224 messageb 2960 S /usr/bin/dbus-daemon --system --address=systemd: --n 255 systemd- 11424 S /lib/systemd/systemd-networkd 261 root 2884 S /lib/systemd/systemd-logind 459 root 2968 S grep systemd ---- systemctl --version systemd 225 -PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL -XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN ---- dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames method return sender=org.freedesktop.DBus -> dest=:1.16 reply_serial=2 array [ string "org.freedesktop.DBus" string "org.freedesktop.login1" string ":1.7" string "org.openbmc.examples.SDBusService1" string ":1.8" string ":1.9" string "org.openbmc.examples.PythonService0" string "org.openbmc.examples.PythonService1" string "org.freedesktop.systemd1" string "org.openbmc.HostIpmi" string ":1.10" string ":1.11" string ":1.0" string "org.openbmc.objectmapper" string ":1.1" string "org.openbmc.managers.Sensors" string ":1.2" string "org.freedesktop.network1" string ":1.16" string ":1.3" string "org.openbmc.managers.System" string ":1.4" string ":1.5" string "org.openbmc.records.events" string "org.openbmc.examples.SDBusService0" string ":1.6" ] ----- dbus-send --system --print-reply --dest=org.freedesktop.network1 /org/freedesktop/network1 org.freedesktop.DBus.Introspectable.Introspect method return sender=:1.5 -> dest=:1.18 reply_serial=2 string " " ----- dbus-send --system --print-reply --dest=org.freedesktop.network1 /org/freedesktop/network1 org.freedesktop.DBus.Properties.GetAll string:org.freedesktop.network1.Manager method return sender=:1.5 -> dest=:1.19 reply_serial=2 array [ dict entry( string "OperationalState" variant string "routable" ) ] ----- dbus-send --system --print-reply --dest=org.freedesktop.network1 /org/freedesktop/network1 org.freedesktop.DBus.Properties.Get string:org.freedesktop.network1.Manager string:OperationalState method return sender=:1.5 -> dest=:1.20 reply_serial=2 variant string "routable" */ /* *---------------------------------------------------------------------------- * Network Configuration. *---------------------------------------------------------------------------- */ Triggers: - udev --> .link file - RTM_xxx events Flow: |-- manager_load_config(Manager *m) |-- netdev_load(m); --> .netdev file |-- network_load(m) --> .network file /* *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------- METHODS -------- *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ /* *---------------------------------------------------------------------------- * Network Manager. *---------------------------------------------------------------------------- */ networkd.h:int manager_new(Manager **ret); networkd.h:void manager_free(Manager *m); networkd.h:int manager_connect_bus(Manager *m); networkd.h:int manager_run(Manager *m); networkd.h:int manager_load_config(Manager *m); networkd.h:bool manager_should_reload(Manager *m); networkd.h:int manager_rtnl_enumerate_links(Manager *m); networkd.h:int manager_rtnl_enumerate_addresses(Manager *m); networkd.h:int manager_rtnl_enumerate_routes(Manager *m); networkd.h:int manager_rtnl_process_address(sd_netlink *nl, sd_netlink_message *message, void *userdata); networkd.h:int manager_rtnl_process_route(sd_netlink *nl, sd_netlink_message *message, void *userdata); networkd.h:void manager_dirty(Manager *m); networkd.h:int manager_address_pool_acquire(Manager *m, int family, unsigned prefixlen, union in_addr_union *found); networkd.h:Link* manager_find_uplink(Manager *m, Link *exclude); /* *---------------------------------------------------------------------------- * Network Config Parse. *---------------------------------------------------------------------------- */ networkd-network.h:void network_free(Network *network); networkd-network.h:int network_load(Manager *manager); networkd-network.h:int network_get_by_name(Manager *manager, const char *name, Network **ret); networkd-network.h:int network_get(Manager *manager, struct udev_device *device, const char *ifname, const struct ether_addr *mac, Network **ret); networkd-network.h:int network_apply(Manager *manager, Network *network, Link *link); networkd-network.h:int config_parse_netdev(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); networkd-network.h:int config_parse_domains(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); networkd-network.h:int config_parse_tunnel(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); networkd-network.h:int config_parse_dhcp(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); networkd-network.h:int config_parse_dhcp_client_identifier(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); networkd-network.h:int config_parse_ipv6token(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); networkd-network.h:int 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); networkd-network.h:int 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); networkd-network.h:int config_parse_timezone(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); networkd-network.h:int config_parse_dhcp_server_dns(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); networkd-network.h:int config_parse_dhcp_server_ntp(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); networkd-network.h:int config_parse_ipv4ll(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); networkd-network.h:const struct ConfigPerfItem* network_network_gperf_lookup(const char *key, unsigned length); networkd-network.h:int network_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error); networkd-network.h:int network_object_find(sd_bus *bus, const char *path, const char *interface, void *userdata, void **found, sd_bus_error *error); /* *---------------------------------------------------------------------------- * Network Address *---------------------------------------------------------------------------- */ networkd-address.h:int address_new_static(Network *network, unsigned section, Address **ret); networkd-address.h:int address_new(Address **ret); networkd-address.h:void address_free(Address *address); networkd-address.h:int address_add_foreign(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret); networkd-address.h:int address_add(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret); networkd-address.h:int address_get(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret); networkd-address.h:int address_update(Address *address, unsigned char flags, unsigned char scope, struct ifa_cacheinfo *cinfo); networkd-address.h:int address_drop(Address *address); networkd-address.h:int address_configure(Address *address, Link *link, sd_netlink_message_handler_t callback, bool update); networkd-address.h:int address_remove(Address *address, Link *link, sd_netlink_message_handler_t callback); networkd-address.h:bool address_equal(Address *a1, Address *a2); networkd-address.h:bool address_is_ready(const Address *a); networkd-address.h:int config_parse_address(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); networkd-address.h:int config_parse_broadcast(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); networkd-address.h:int config_parse_label(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); /* *---------------------------------------------------------------------------- * Network Route Ops. *---------------------------------------------------------------------------- */ networkd-route.h:int route_new_static(Network *network, unsigned section, Route **ret); networkd-route.h:int route_new(Route **ret); networkd-route.h:void route_free(Route *route); networkd-route.h:int route_configure(Route *route, Link *link, sd_netlink_message_handler_t callback); networkd-route.h:int route_remove(Route *route, Link *link, sd_netlink_message_handler_t callback); networkd-route.h:int route_get(Link *link, int family, union in_addr_union *dst, unsigned char dst_prefixlen, unsigned char tos, uint32_t priority, unsigned char table, Route **ret); networkd-route.h:int route_add(Link *link, int family, union in_addr_union *dst, unsigned char dst_prefixlen, unsigned char tos, uint32_t priority, unsigned char table, Route **ret); networkd-route.h:int route_add_foreign(Link *link, int family, union in_addr_union *dst, unsigned char dst_prefixlen, unsigned char tos, uint32_t priority, unsigned char table, Route **ret); networkd-route.h:int route_update(Route *route, union in_addr_union *src, unsigned char src_prefixlen, union in_addr_union *gw, union in_addr_union *prefsrc, unsigned char scope, unsigned char protocol); networkd-route.h:void route_drop(Route *route); networkd-route.h:int route_expire_handler(sd_event_source *s, uint64_t usec, void *userdata); networkd-route.h:int config_parse_gateway(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); networkd-route.h:int config_parse_preferred_src(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); networkd-route.h:int config_parse_destination(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); networkd-route.h:int config_parse_route_priority(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); networkd-route.h:int config_parse_route_scope(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); /* *---------------------------------------------------------------------------- * Network Link *---------------------------------------------------------------------------- */ networkd-link.h:int link_get(Manager *m, int ifindex, Link **ret); networkd-link.h:int link_add(Manager *manager, sd_netlink_message *message, Link **ret); networkd-link.h:void link_drop(Link *link); networkd-link.h:int link_address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata); networkd-link.h:int link_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata); networkd-link.h:void link_enter_failed(Link *link); networkd-link.h:int link_initialized(Link *link, struct udev_device *device); networkd-link.h:void link_check_ready(Link *link); networkd-link.h:void link_update_operstate(Link *link); networkd-link.h:int link_update(Link *link, sd_netlink_message *message); networkd-link.h:void link_dirty(Link *link); networkd-link.h:void link_clean(Link *link); networkd-link.h:int link_save(Link *link); networkd-link.h:int link_carrier_reset(Link *link); networkd-link.h:bool link_has_carrier(Link *link); networkd-link.h:int link_set_mtu(Link *link, uint32_t mtu); networkd-link.h:int link_set_hostname(Link *link, const char *hostname); networkd-link.h:int link_set_timezone(Link *link, const char *timezone); networkd-link.h:int ipv4ll_configure(Link *link); networkd-link.h:int dhcp4_configure(Link *link); networkd-link.h:int dhcp6_configure(Link *link, bool information_request); networkd-link.h:int ndisc_configure(Link *link); networkd-link.h:bool link_lldp_enabled(Link *link); networkd-link.h:bool link_ipv4ll_enabled(Link *link); networkd-link.h:bool link_ipv6ll_enabled(Link *link); networkd-link.h:bool link_dhcp4_server_enabled(Link *link); networkd-link.h:bool link_dhcp4_enabled(Link *link); networkd-link.h:bool link_dhcp6_enabled(Link *link); networkd-link.h:int link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error); networkd-link.h:int link_object_find(sd_bus *bus, const char *path, const char *interface, void *userdata, void **found, sd_bus_error *error); networkd-link.h:Link *link_unref(Link *link); networkd-link.h:Link *link_ref(Link *link); /* *---------------------------------------------------------------------------- * Network Device Types. *---------------------------------------------------------------------------- */ networkd-netdev.h: void (*init)(NetDev *n); networkd-netdev.h: void (*done)(NetDev *n); networkd-netdev.h: int (*fill_message_create)(NetDev *netdev, Link *link, sd_netlink_message *message); networkd-netdev.h: int (*create)(NetDev *netdev); networkd-netdev.h: int (*post_create)(NetDev *netdev, Link *link, sd_netlink_message *message); networkd-netdev.h: int (*config_verify)(NetDev *netdev, const char *filename); networkd-netdev.h:int netdev_load(Manager *manager); networkd-netdev.h:void netdev_drop(NetDev *netdev); networkd-netdev.h:NetDev *netdev_unref(NetDev *netdev); networkd-netdev.h:NetDev *netdev_ref(NetDev *netdev); networkd-netdev.h:int netdev_get(Manager *manager, const char *name, NetDev **ret); networkd-netdev.h:int netdev_set_ifindex(NetDev *netdev, sd_netlink_message *newlink); networkd-netdev.h:int netdev_enslave(NetDev *netdev, Link *link, sd_netlink_message_handler_t callback); networkd-netdev.h:int netdev_get_mac(const char *ifname, struct ether_addr **ret); networkd-netdev.h:int netdev_join(NetDev *netdev, Link *link, sd_netlink_message_handler_t cb); networkd-netdev.h:int config_parse_netdev_kind(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); networkd-netdev.h:const struct ConfigPerfItem* network_netdev_gperf_lookup(const char *key, unsigned length); networkd-netdev-bond.h:int config_parse_bond_mode(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); networkd-netdev-bond.h:int config_parse_bond_xmit_hash_policy(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); networkd-netdev-bond.h:int config_parse_bond_lacp_rate(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); networkd-netdev-bond.h:int config_parse_bond_ad_select(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); networkd-netdev-bond.h:int config_parse_bond_fail_over_mac(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); networkd-netdev-bond.h:int config_parse_bond_arp_validate(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); networkd-netdev-bond.h:int config_parse_bond_arp_all_targets(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); networkd-netdev-bond.h:int config_parse_bond_primary_reselect(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); networkd-netdev-bond.h:int config_parse_arp_ip_target_address(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); networkd-netdev-tunnel.h:int config_parse_tunnel_address(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); networkd-netdev-tunnel.h:int config_parse_ipv6_flowlabel(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); networkd-netdev-tunnel.h:int config_parse_encap_limit(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); networkd-netdev-ipvlan.h:int config_parse_ipvlan_mode(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); networkd-netdev-macvlan.h:int config_parse_macvlan_mode(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); networkd-netdev-vxlan.h:int config_parse_vxlan_group_address(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); /* *---------------------------------------------------------------------------- * Network ARP. *---------------------------------------------------------------------------- */ networkd-fdb.h:int fdb_entry_new_static(Network *const network, const unsigned section, FdbEntry **ret); networkd-fdb.h:void fdb_entry_free(FdbEntry *fdb_entry); networkd-fdb.h:int fdb_entry_configure(Link *const link, FdbEntry *const fdb_entry); networkd-fdb.h:int config_parse_fdb_hwaddr(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); networkd-fdb.h:int config_parse_fdb_vlan_id(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); /* *---------------------------------------------------------------------------- * Network Monitor. *---------------------------------------------------------------------------- */ networkd-wait-online.h:void manager_free(Manager *m); networkd-wait-online.h:int manager_new(Manager **ret, char **interfaces, char **ignore, usec_t timeout); networkd-wait-online.h:bool manager_all_configured(Manager *m); networkd-wait-online.h:bool manager_ignore_link(Manager *m, Link *link); networkd-wait-online-link.h:int link_new(Manager *m, Link **ret, int ifindex, const char *ifname); networkd-wait-online-link.h:Link *link_free(Link *l); networkd-wait-online-link.h:int link_update_rtnl(Link *l, sd_netlink_message *m); networkd-wait-online-link.h:int link_update_monitor(Link *l); networkd-wait-online-link.h:bool link_relevant(Link *l); /* *---------------------------------------------------------------------------- * Network Pool *---------------------------------------------------------------------------- */ networkd-address-pool.h:int address_pool_new(Manager *m, AddressPool **ret, int family, const union in_addr_union *u, unsigned prefixlen); networkd-address-pool.h:int address_pool_new_from_string(Manager *m, AddressPool **ret, int family, const char *p, unsigned prefixlen); networkd-address-pool.h:void address_pool_free(AddressPool *p); networkd-address-pool.h:int address_pool_acquire(AddressPool *p, unsigned prefixlen, union in_addr_union *found); /* *---------------------------------------------------------------------------- * Network Helpers. *---------------------------------------------------------------------------- */ networkd-util.h:int config_parse_resolve(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); networkd-util.h:int 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); networkd-util.h:int 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); /* *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------- EOF -------- *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */