Copyright © 2014 Axis Communications AB. All rights reserved.
***/
-#include <arpa/inet.h>
#include <linux/filter.h>
#include <netinet/if_ether.h>
#include "ether-addr-util.h"
#include "fd-util.h"
#include "in-addr-util.h"
+#include "socket-util.h"
#include "unaligned.h"
int arp_update_filter(int fd, const struct in_addr *a, const struct ether_addr *mac) {
Copyright © 2014 Axis Communications AB. All rights reserved.
***/
-#include <net/ethernet.h>
-#include <netinet/in.h>
-
-#include "socket-util.h"
-#include "sparse-endian.h"
+#include "forward.h"
int arp_update_filter(int fd, const struct in_addr *a, const struct ether_addr *mac);
int arp_network_bind_raw_socket(int ifindex, const struct in_addr *a, const struct ether_addr *mac);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
+#include <linux/if_ether.h>
+
#include "sd-dhcp-client-id.h"
-#include "sd-json.h"
#include "dhcp-duid-internal.h"
-#include "macro.h"
-#include "siphash24.h"
+#include "forward.h"
#include "sparse-endian.h"
/* RFC 2132 section 9.14: its minimum length is 2.
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <errno.h>
-
#include "sd-dhcp-client.h"
-#include "macro.h"
+#include "forward.h"
#include "network-common.h"
typedef enum DHCPState {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-device.h"
#include "sd-dhcp-duid.h"
#include "sd-id128.h"
#include "ether-addr-util.h"
-#include "macro.h"
+#include "forward.h"
#include "sparse-endian.h"
#define SYSTEMD_PEN 43793
Copyright © 2013 Intel Corporation. All rights reserved.
***/
-#include "sd-dhcp-client.h"
+#include "sd-dhcp-lease.h"
-#include "alloc-util.h"
#include "dhcp-client-id-internal.h"
#include "dhcp-option.h"
+#include "forward.h"
#include "list.h"
-#include "time-util.h"
struct sd_dhcp_route {
struct in_addr dst_addr;
Copyright © 2013 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
#include <linux/filter.h>
#include <linux/if_infiniband.h>
#include <linux/if_packet.h>
-#include <net/ethernet.h>
-#include <net/if.h>
#include <net/if_arp.h>
#include <stdio.h>
#include <string.h>
#include "dhcp-network.h"
#include "dhcp-protocol.h"
+#include "ether-addr-util.h"
#include "fd-util.h"
-#include "log.h"
+#include "socket-util.h"
#include "unaligned.h"
static int _bind_raw_socket(
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-#include <stdint.h>
-
-#include "ether-addr-util.h"
-#include "socket-util.h"
+#include "forward.h"
+#include "sparse-endian.h"
int dhcp_network_bind_raw_socket(
int ifindex,
Copyright © 2013 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
-#include <stdint.h>
#include <stdio.h>
#include "alloc-util.h"
#include "hostname-util.h"
#include "memory-util.h"
#include "ordered-set.h"
+#include "string-util.h"
#include "strv.h"
#include "utf8.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdint.h>
-
-#include "sd-dhcp-option.h"
+#include "sd-dhcp-option.h" /* IWYU pragma: export */
#include "dhcp-protocol.h"
-#include "dns-resolver-internal.h"
+#include "forward.h"
#include "hash-funcs.h"
struct sd_dhcp_option {
Copyright © 2013 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
-#include <net/ethernet.h>
#include <net/if_arp.h>
#include <string.h>
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-#include <stdint.h>
-
#include "dhcp-protocol.h"
+#include "forward.h"
int dhcp_message_init(
DHCPMessage *message,
#include <netinet/ip.h>
#include <netinet/udp.h>
-#include <stdint.h>
#include "sd-dhcp-protocol.h"
-#include "macro.h"
+#include "forward.h"
#include "sparse-endian.h"
#include "time-util.h"
Copyright © 2013 Intel Corporation. All rights reserved.
***/
+#include "sd-dhcp-lease.h"
#include "sd-dhcp-server.h"
-#include "sd-event.h"
#include "dhcp-client-id-internal.h"
#include "dhcp-option.h"
+#include "forward.h"
#include "network-common.h"
-#include "ordered-set.h"
-#include "time-util.h"
+#include "sparse-endian.h"
typedef enum DHCPRawOption {
DHCP_RAW_OPTION_DATA_UINT8,
_DHCP_RAW_OPTION_DATA_INVALID,
} DHCPRawOption;
-struct sd_dhcp_server {
+typedef struct sd_dhcp_server {
unsigned n_ref;
sd_event *event;
int lease_dir_fd;
char *lease_file;
-};
+} sd_dhcp_server;
typedef struct DHCPRequest {
/* received message */
#pragma once
#include "sd-dhcp-server-lease.h"
-#include "sd-json.h"
#include "dhcp-client-id-internal.h"
#include "dhcp-server-internal.h"
-#include "time-util.h"
+#include "forward.h"
typedef struct sd_dhcp_server_lease {
unsigned n_ref;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
+#include "forward.h"
#include "sd-dhcp6-client.h"
int dhcp6_client_set_state_callback(
#include <netinet/in.h>
#include "sd-dhcp6-client.h"
-#include "sd-event.h"
#include "dhcp-duid-internal.h"
-#include "dhcp6-client-internal.h"
#include "dhcp6-option.h"
#include "dhcp6-protocol.h"
-#include "ether-addr-util.h"
-#include "hashmap.h"
-#include "macro.h"
+#include "forward.h"
#include "network-common.h"
-#include "ordered-set.h"
#include "sparse-endian.h"
-#include "time-util.h"
/* what to request from the server, addresses (IA_NA) and/or prefixes (IA_PD) */
typedef enum DHCP6RequestIA {
Copyright © 2014-2015 Intel Corporation. All rights reserved.
***/
-#include <inttypes.h>
-
#include "sd-dhcp6-lease.h"
#include "dhcp6-option.h"
#include "dhcp6-protocol.h"
-#include "dns-resolver-internal.h"
-#include "macro.h"
-#include "set.h"
+#include "forward.h"
#include "time-util.h"
struct sd_dhcp6_lease {
Copyright © 2014 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
-#include <linux/if_packet.h>
#include <netinet/in.h>
-#include <netinet/ip6.h>
#include <stdio.h>
#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
#include "dhcp6-internal.h"
#include "dhcp6-protocol.h"
Copyright © 2014-2015 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
#include <netinet/in.h>
#include "sd-dhcp6-client.h"
+#include "sd-dhcp6-option.h"
#include "alloc-util.h"
#include "dhcp6-internal.h"
#include "dhcp6-protocol.h"
#include "dns-def.h"
#include "dns-domain.h"
-#include "errno-util.h"
#include "escape.h"
#include "memory-util.h"
#include "network-common.h"
+#include "ordered-set.h"
+#include "string-util.h"
#include "strv.h"
#include "unaligned.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-dhcp6-client.h"
+#include <netinet/in.h>
-#include "hash-funcs.h"
+#include "sd-dhcp6-option.h" /* IWYU pragma: export */
+
+#include "forward.h"
#include "list.h"
-#include "macro.h"
-#include "ordered-set.h"
#include "sparse-endian.h"
typedef struct sd_dhcp6_option {
Copyright © 2014 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
-#include <netinet/ip6.h>
-#include <netinet/udp.h>
-
-#include "macro.h"
+#include "forward.h"
#include "sparse-endian.h"
struct DHCP6Message {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <errno.h>
-
#include "sd-dns-resolver.h"
-#include "list.h"
-#include "macro.h"
+#include "forward.h"
#include "socket-netlink.h"
/* https://www.iana.org/assignments/dns-svcb/dns-svcb.xhtml#dns-svcparamkeys */
/* Represents a "designated resolver" */
/* typedef struct sd_dns_resolver sd_dns_resolver; */
-struct sd_dns_resolver {
+typedef struct sd_dns_resolver {
uint16_t priority;
char *auth_name;
int family;
sd_dns_alpn_flags transports;
uint16_t port;
char *dohpath;
-};
+} sd_dns_resolver;
void siphash24_compress_resolver(const sd_dns_resolver *res, struct siphash *state);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <sys/socket.h>
-#include <unistd.h>
-#include "alloc-util.h"
-#include "dhcp-lease-internal.h"
#include "dhcp-network.h"
-#include "fs-util.h"
#include "fuzz.h"
#include "network-internal.h"
#include "sd-dhcp-client.c"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
#include "fuzz.h"
#include "sd-dhcp-server.c"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
+#include <net/if_arp.h>
#include "fuzz.h"
-#include "path-util.h"
#include "rm-rf.h"
#include "sd-dhcp-server.c"
#include "tmpfile-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <stdlib.h>
#include <unistd.h>
#include "sd-dhcp6-client.h"
#include "sd-event.h"
#include "dhcp6-internal.h"
-#include "event-util.h"
#include "fd-util.h"
#include "fuzz.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
+#include <sys/socket.h>
#include <unistd.h>
#include "sd-event.h"
+#include "sd-json.h"
#include "sd-lldp-rx.h"
#include "fd-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <arpa/inet.h>
-#include <netinet/icmp6.h>
#include <unistd.h>
+#include "sd-event.h"
#include "sd-ndisc.h"
#include "sd-radv.h"
-#include "alloc-util.h"
#include "fd-util.h"
#include "fuzz.h"
#include "icmp6-packet.h"
#include "icmp6-test-util.h"
-#include "ndisc-internal.h"
+#include "icmp6-util.h"
#include "ndisc-option.h"
-#include "socket-util.h"
+#include "set.h"
static void test_with_sd_ndisc(const uint8_t *data, size_t size) {
struct ether_addr mac_addr = {
#include "icmp6-packet.h"
#include "icmp6-util.h"
#include "in-addr-util.h"
-#include "iovec-util.h"
-#include "network-common.h"
+#include "log.h"
#include "socket-util.h"
DEFINE_TRIVIAL_REF_UNREF_FUNC(ICMP6Packet, icmp6_packet, mfree);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <inttypes.h>
#include <netinet/in.h>
-#include "macro.h"
-#include "memory-util.h"
+#include "forward.h"
#include "time-util.h"
typedef struct ICMP6Packet {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <netinet/icmp6.h>
-#include <netinet/ip6.h>
+#include <sys/uio.h>
#include <unistd.h>
#include "fd-util.h"
#include "icmp6-test-util.h"
+#include "icmp6-util.h"
+#include "time-util.h"
int test_fd[2] = EBADF_PAIR;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "icmp6-util.h"
-
extern int test_fd[2];
Copyright © 2014 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
-#include <linux/if_packet.h>
-#include <net/if.h>
#include <netinet/icmp6.h>
#include <netinet/in.h>
-#include <netinet/ip6.h>
#include <stdio.h>
#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
#include "fd-util.h"
#include "icmp6-util.h"
#include "in-addr-util.h"
-#include "iovec-util.h"
#include "network-common.h"
#include "socket-util.h"
Copyright © 2014-2015 Intel Corporation. All rights reserved.
***/
-#include <net/ethernet.h>
#include <netinet/in.h>
-#include <stdbool.h>
-#include <sys/uio.h>
-#include "time-util.h"
+#include "forward.h"
#define IN6_ADDR_ALL_ROUTERS_MULTICAST \
((const struct in6_addr) { { { \
#include "alloc-util.h"
#include "escape.h"
#include "ether-addr-util.h"
+#include "hashmap.h"
#include "hexdecoct.h"
#include "in-addr-util.h"
#include "json-util.h"
#include "lldp-neighbor.h"
+#include "lldp-rx-internal.h"
#include "memory-util.h"
#include "missing_network.h"
+#include "prioq.h"
+#include "siphash24.h"
#include "unaligned.h"
static void lldp_neighbor_id_hash_func(const LLDPNeighborID *id, struct siphash *state) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <inttypes.h>
-#include <stdbool.h>
-#include <sys/types.h>
+#include <net/ethernet.h>
-#include "sd-json.h"
#include "sd-lldp-rx.h"
-#include "hash-funcs.h"
-#include "lldp-rx-internal.h"
+#include "forward.h"
+#include "memory-util.h"
#include "time-util.h"
typedef struct LLDPNeighborID {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/filter.h>
-#include <netinet/if_ether.h>
#include "fd-util.h"
#include "lldp-network.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-event.h"
-
int lldp_network_bind_raw_socket(int ifindex);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-event.h"
-#include "sd-json.h"
-#include "sd-lldp-rx.h"
+#include <net/ethernet.h>
+
+#include "sd-lldp-rx.h" /* IWYU pragma: export */
-#include "hashmap.h"
#include "network-common.h"
-#include "prioq.h"
+#include "forward.h"
struct sd_lldp_rx {
unsigned n_ref;
Copyright © 2014 Intel Corporation. All rights reserved.
***/
-#include "sd-ndisc.h"
+#include <net/ethernet.h>
+#include <netinet/in.h>
+#include "sd-event.h"
+#include "sd-ndisc.h" /* IWYU pragma: export */
+
+#include "forward.h"
#include "network-common.h"
#include "time-util.h"
#define NDISC_MAX_ROUTER_SOLICITATION_INTERVAL (3600U * USEC_PER_SEC)
#define NDISC_MAX_ROUTER_SOLICITATIONS 3U
-struct sd_ndisc {
+typedef struct sd_ndisc {
unsigned n_ref;
int ifindex;
sd_ndisc_callback_t callback;
void *userdata;
-};
+} sd_ndisc;
const char* ndisc_event_to_string(sd_ndisc_event_t e) _const_;
sd_ndisc_event_t ndisc_event_from_string(const char *s) _pure_;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-ndisc.h"
+#include <linux/in6.h>
-#include "icmp6-packet.h"
-#include "set.h"
+#include "forward.h"
-struct sd_ndisc_neighbor {
+typedef struct sd_ndisc_neighbor {
unsigned n_ref;
ICMP6Packet *packet;
struct in6_addr target_address;
Set *options;
-};
+} sd_ndisc_neighbor;
sd_ndisc_neighbor* ndisc_neighbor_new(ICMP6Packet *packet);
int ndisc_neighbor_parse(sd_ndisc *nd, sd_ndisc_neighbor *na);
#include <linux/ipv6.h>
#include <netinet/icmp6.h>
+#include "sd-ndisc-protocol.h"
+
#include "alloc-util.h"
#include "dns-def.h"
#include "dns-domain.h"
#include "dns-resolver-internal.h"
#include "ether-addr-util.h"
+#include "hash-funcs.h"
#include "hostname-util.h"
+#include "icmp6-packet.h"
#include "icmp6-util.h"
#include "in-addr-util.h"
#include "iovec-util.h"
-#include "missing_network.h"
#include "ndisc-option.h"
#include "network-common.h"
+#include "set.h"
+#include "siphash24.h"
+#include "string-util.h"
#include "strv.h"
#include "unaligned.h"
return 0;
}
+sd_ndisc_option* ndisc_option_get(Set *options, const sd_ndisc_option *p) {
+ return set_get(options, ASSERT_PTR(p));
+}
+
+sd_ndisc_option* ndisc_option_get_by_type(Set *options, uint8_t type) {
+ return ndisc_option_get(options, &(const sd_ndisc_option) { .type = type });
+}
+
int ndisc_option_get_mac(Set *options, uint8_t type, struct ether_addr *ret) {
assert(IN_SET(type, SD_NDISC_OPTION_SOURCE_LL_ADDRESS, SD_NDISC_OPTION_TARGET_LL_ADDRESS));
return 0;
}
+void ndisc_option_remove(Set *options, const sd_ndisc_option *p) {
+ ndisc_option_free(set_remove(options, ASSERT_PTR(p)));
+}
+
int ndisc_send(int fd, const struct in6_addr *dst, const struct icmp6_hdr *hdr, Set *options, usec_t timestamp) {
int r;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <inttypes.h>
#include <net/ethernet.h>
-#include <netinet/icmp6.h>
-#include <netinet/in.h>
#include <netinet/ip6.h>
-#include <sys/uio.h>
#include "sd-dns-resolver.h"
-#include "sd-ndisc-protocol.h"
-#include "icmp6-packet.h"
-#include "macro.h"
-#include "set.h"
#include "time-util.h"
typedef struct sd_ndisc_raw {
int ndisc_parse_options(ICMP6Packet *p, Set **ret_options);
-static inline sd_ndisc_option* ndisc_option_get(Set *options, const sd_ndisc_option *p) {
- return set_get(options, ASSERT_PTR(p));
-}
-static inline sd_ndisc_option* ndisc_option_get_by_type(Set *options, uint8_t type) {
- return ndisc_option_get(options, &(const sd_ndisc_option) { .type = type });
-}
+sd_ndisc_option* ndisc_option_get(Set *options, const sd_ndisc_option *p);
+sd_ndisc_option* ndisc_option_get_by_type(Set *options, uint8_t type);
int ndisc_option_get_mac(Set *options, uint8_t type, struct ether_addr *ret);
-static inline void ndisc_option_remove(Set *options, const sd_ndisc_option *p) {
- ndisc_option_free(set_remove(options, ASSERT_PTR(p)));
-}
+void ndisc_option_remove(Set *options, const sd_ndisc_option *p);
static inline void ndisc_option_remove_by_type(Set *options, uint8_t type) {
ndisc_option_remove(options, &(const sd_ndisc_option) { .type = type });
}
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-ndisc.h"
+#include <linux/in6.h>
-#include "icmp6-packet.h"
-#include "set.h"
+#include "forward.h"
-struct sd_ndisc_redirect {
+typedef struct sd_ndisc_redirect {
unsigned n_ref;
ICMP6Packet *packet;
struct in6_addr destination_address;
Set *options;
-};
+} sd_ndisc_redirect;
sd_ndisc_redirect* ndisc_redirect_new(ICMP6Packet *packet);
int ndisc_redirect_parse(sd_ndisc *nd, sd_ndisc_redirect *rd);
#include "sd-ndisc.h"
#include "icmp6-packet.h"
+#include "iterator.h"
#include "ndisc-option.h"
-#include "time-util.h"
-struct sd_ndisc_router {
+typedef struct sd_ndisc_router {
unsigned n_ref;
ICMP6Packet *packet;
Set *options;
Iterator iterator;
sd_ndisc_option *current_option;
-};
+} sd_ndisc_router;
sd_ndisc_router* ndisc_router_new(ICMP6Packet *packet);
int ndisc_router_parse(sd_ndisc *nd, sd_ndisc_router *rt);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-radv.h"
+#include "forward.h"
-#include "icmp6-packet.h"
-#include "set.h"
-
-struct sd_ndisc_router_solicit {
+typedef struct sd_ndisc_router_solicit {
unsigned n_ref;
ICMP6Packet *packet;
Set *options;
-};
+} sd_ndisc_router_solicit;
sd_ndisc_router_solicit* ndisc_router_solicit_new(ICMP6Packet *packet);
int ndisc_router_solicit_parse(sd_radv *ra, sd_ndisc_router_solicit *rs);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <sys/socket.h>
-
+#include "forward.h"
#include "log-link.h"
#include "sparse-endian.h"
#include "time-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
-#include <linux/if.h>
-#include <netinet/ether.h>
-
-#include "sd-ndisc.h"
+#include <stdio.h>
#include "alloc-util.h"
#include "dhcp-lease-internal.h"
+#include "dns-resolver-internal.h"
#include "extract-word.h"
#include "hexdecoct.h"
#include "in-addr-util.h"
-#include "log.h"
#include "network-internal.h"
#include "parse-util.h"
+#include "string-util.h"
#include "strv.h"
size_t serialize_in_addrs(FILE *f,
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-#include <stdio.h>
-
-#include "sd-dhcp-lease.h"
+#include "forward.h"
size_t serialize_in_addrs(FILE *f,
const struct in_addr *addresses,
Copyright © 2017 Intel Corporation. All rights reserved.
***/
-#include <netinet/icmp6.h>
+#include <netinet/in.h>
-#include "sd-radv.h"
-
-#include "list.h"
-#include "ndisc-option.h"
+#include "forward.h"
#include "network-common.h"
-#include "sparse-endian.h"
#include "time-util.h"
/* RFC 4861 section 6.2.1.
#include "iovec-util.h"
#include "json-util.h"
#include "log.h"
+#include "siphash24.h"
+#include "string-util.h"
#include "unaligned.h"
#include "utf8.h"
Copyright © 2013 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
#include <linux/if_infiniband.h>
-#include <net/ethernet.h>
#include <net/if_arp.h>
#include <stdio.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
#include "sd-dhcp-client.h"
#include "dhcp-option.h"
#include "dhcp-packet.h"
#include "dns-domain.h"
+#include "errno-util.h"
#include "ether-addr-util.h"
#include "event-util.h"
#include "fd-util.h"
#include "network-common.h"
#include "random-util.h"
#include "set.h"
+#include "socket-util.h"
#include "sort-util.h"
#include "string-table.h"
#include "string-util.h"
#include "strv.h"
#include "time-util.h"
-#include "utf8.h"
#include "web-util.h"
#define MAX_MAC_ADDR_LEN CONST_MAX(INFINIBAND_ALEN, ETH_ALEN)
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/if_infiniband.h>
-#include <net/ethernet.h>
#include <net/if_arp.h>
+#include <stdio.h>
+#include "alloc-util.h"
#include "dhcp-duid-internal.h"
#include "hexdecoct.h"
#include "netif-util.h"
#include "network-common.h"
#include "siphash24.h"
#include "string-table.h"
+#include "string-util.h"
#include "unaligned.h"
#define HASH_KEY SD_ID128_MAKE(80,11,8c,c2,fe,4a,03,ee,3e,d6,0c,6f,36,39,14,09)
***/
#include <arpa/inet.h>
-#include <errno.h>
-#include <stdlib.h>
#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
#include "sd-dhcp-lease.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <sys/stat.h>
+
+#include "sd-event.h"
+
#include "alloc-util.h"
#include "dhcp-server-lease-internal.h"
-#include "dns-def.h"
#include "errno-util.h"
#include "fd-util.h"
#include "fs-util.h"
+#include "hashmap.h"
+#include "in-addr-util.h"
#include "iovec-util.h"
#include "json-util.h"
#include "mkdir.h"
+#include "string-util.h"
#include "tmpfile-util.h"
static sd_dhcp_server_lease* dhcp_server_lease_free(sd_dhcp_server_lease *lease) {
Copyright © 2013 Intel Corporation. All rights reserved.
***/
-#include <net/if_arp.h>
-#include <sys/ioctl.h>
-
#include "sd-dhcp-server.h"
+#include "sd-event.h"
#include "sd-id128.h"
#include "alloc-util.h"
#include "dhcp-server-internal.h"
#include "dhcp-server-lease-internal.h"
#include "dns-domain.h"
+#include "errno-util.h"
#include "fd-util.h"
#include "in-addr-util.h"
#include "iovec-util.h"
#include "ordered-set.h"
#include "path-util.h"
#include "siphash24.h"
+#include "socket-util.h"
#include "string-util.h"
#include "unaligned.h"
-#include "utf8.h"
#define DHCP_DEFAULT_LEASE_TIME_USEC USEC_PER_HOUR
#define DHCP_MAX_LEASE_TIME_USEC (USEC_PER_HOUR*12)
Copyright © 2014-2015 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
#include <linux/if_arp.h>
#include <linux/if_infiniband.h>
-#include <sys/ioctl.h>
#include "sd-dhcp6-client.h"
+#include "sd-dhcp6-option.h"
#include "alloc-util.h"
#include "device-util.h"
#include "dhcp-duid-internal.h"
+#include "dhcp6-client-internal.h"
#include "dhcp6-internal.h"
#include "dhcp6-lease-internal.h"
#include "dns-domain.h"
+#include "errno-util.h"
#include "event-util.h"
#include "fd-util.h"
#include "hostname-util.h"
#include "in-addr-util.h"
#include "iovec-util.h"
+#include "ordered-set.h"
#include "random-util.h"
#include "socket-util.h"
#include "sort-util.h"
+#include "string-util.h"
#include "strv.h"
#include "web-util.h"
Copyright © 2014-2015 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
+#include "sd-dhcp6-option.h"
#include "alloc-util.h"
#include "dhcp6-internal.h"
#include "dhcp6-lease-internal.h"
#include "dns-domain.h"
+#include "dns-resolver-internal.h"
#include "network-common.h"
+#include "set.h"
#include "sort-util.h"
+#include "string-util.h"
#include "strv.h"
#include "unaligned.h"
#include "alloc-util.h"
#include "dns-resolver-internal.h"
#include "errno-util.h"
-#include "log.h"
-#include "macro.h"
+#include "siphash24.h"
#include "socket-netlink.h"
#include "stdio-util.h"
#include "string-table.h"
#ifndef SD_DNS_RESOLVER_H
#define SD_DNS_RESOLVER_H
-#include <errno.h>
-#include <netinet/in.h>
-#include <stddef.h>
-#include <stdint.h>
-
#include "_sd-common.h"
+#include "forward.h"
+
_SD_BEGIN_DECLARATIONS;
typedef struct sd_dns_resolver sd_dns_resolver;
Copyright © 2014 Axis Communications AB. All rights reserved.
***/
-#include <arpa/inet.h>
-#include <errno.h>
#include <netinet/if_ether.h>
#include <stdio.h>
-#include <stdlib.h>
#include "sd-ipv4acd.h"
#include "alloc-util.h"
#include "arp-util.h"
+#include "errno-util.h"
#include "ether-addr-util.h"
#include "event-util.h"
#include "fd-util.h"
#include "memory-util.h"
#include "network-common.h"
#include "random-util.h"
-#include "siphash24.h"
+#include "socket-util.h"
#include "string-table.h"
#include "string-util.h"
#include "time-util.h"
Copyright © 2014 Axis Communications AB. All rights reserved.
***/
-#include <arpa/inet.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-
#include "sd-id128.h"
#include "sd-ipv4acd.h"
#include "sd-ipv4ll.h"
#include "ether-addr-util.h"
#include "in-addr-util.h"
#include "network-common.h"
-#include "random-util.h"
#include "siphash24.h"
#include "sparse-endian.h"
-#include "string-util.h"
#define IPV4LL_NETWORK UINT32_C(0xA9FE0000)
#define IPV4LL_NETMASK UINT32_C(0xFFFF0000)
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <arpa/inet.h>
#include <linux/sockios.h>
#include <sys/ioctl.h>
#include "sd-lldp-rx.h"
#include "alloc-util.h"
+#include "errno-util.h"
#include "ether-addr-util.h"
#include "event-util.h"
#include "fd-util.h"
+#include "hashmap.h"
#include "lldp-neighbor.h"
#include "lldp-network.h"
#include "lldp-rx-internal.h"
#include "memory-util.h"
#include "network-common.h"
+#include "prioq.h"
#include "socket-util.h"
#include "sort-util.h"
#include "string-table.h"
+#include "string-util.h"
#define LLDP_DEFAULT_NEIGHBORS_MAX 128U
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <arpa/inet.h>
-#include <linux/sockios.h>
-#include <sys/ioctl.h>
-
#include "sd-event.h"
#include "sd-id128.h"
#include "sd-lldp-tx.h"
#include "sd-ndisc.h"
#include "alloc-util.h"
+#include "icmp6-packet.h"
#include "in-addr-util.h"
#include "ndisc-internal.h"
#include "ndisc-neighbor-internal.h"
#include "ndisc-option.h"
+#include "set.h"
static sd_ndisc_neighbor* ndisc_neighbor_free(sd_ndisc_neighbor *na) {
if (!na)
#include "sd-ndisc.h"
#include "alloc-util.h"
+#include "icmp6-packet.h"
#include "in-addr-util.h"
#include "ndisc-internal.h"
#include "ndisc-option.h"
#include "ndisc-redirect-internal.h"
+#include "set.h"
static sd_ndisc_redirect* ndisc_redirect_free(sd_ndisc_redirect *rd) {
if (!rd)
#include <netinet/icmp6.h>
+#include "sd-ndisc-protocol.h"
+#include "sd-ndisc-router-solicit.h"
#include "sd-radv.h"
#include "alloc-util.h"
-#include "in-addr-util.h"
+#include "icmp6-packet.h"
#include "ndisc-option.h"
#include "ndisc-router-solicit-internal.h"
#include "radv-internal.h"
+#include "set.h"
static sd_ndisc_router_solicit* ndisc_router_solicit_free(sd_ndisc_router_solicit *rs) {
if (!rs)
#include "sd-ndisc.h"
#include "alloc-util.h"
-#include "dns-domain.h"
-#include "dns-resolver-internal.h"
#include "ndisc-internal.h"
#include "ndisc-router-internal.h"
+#include "set.h"
#include "string-table.h"
-#include "unaligned.h"
+#include "string-util.h"
static sd_ndisc_router* ndisc_router_free(sd_ndisc_router *rt) {
if (!rt)
#include "ndisc-router-internal.h"
#include "network-common.h"
#include "random-util.h"
+#include "set.h"
#include "socket-util.h"
#include "string-table.h"
#include "string-util.h"
Copyright © 2017 Intel Corporation. All rights reserved.
***/
-#include <arpa/inet.h>
#include <linux/ipv6.h>
#include <netinet/icmp6.h>
#include <netinet/in.h>
+#include "sd-ndisc-protocol.h"
+#include "sd-ndisc-router-solicit.h"
#include "sd-radv.h"
#include "alloc-util.h"
-#include "dns-domain.h"
-#include "ether-addr-util.h"
#include "event-util.h"
#include "fd-util.h"
+#include "icmp6-packet.h"
#include "icmp6-util.h"
#include "in-addr-util.h"
-#include "iovec-util.h"
-#include "macro.h"
#include "memory-util.h"
+#include "ndisc-option.h"
#include "ndisc-router-solicit-internal.h"
#include "network-common.h"
#include "radv-internal.h"
#include "random-util.h"
+#include "set.h"
#include "socket-util.h"
#include "string-util.h"
-#include "strv.h"
-#include "unaligned.h"
int sd_radv_new(sd_radv **ret) {
_cleanup_(sd_radv_unrefp) sd_radv *ra = NULL;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <linux/veth.h>
-#include <net/if.h>
-#include <stdlib.h>
-#include <unistd.h>
+#include <net/ethernet.h>
#include "sd-event.h"
#include "sd-ipv4acd.h"
Copyright © 2013 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
-#include <net/if.h>
#include <net/if_arp.h>
#include <stdio.h>
+#include <stdlib.h>
#include <sys/socket.h>
#include <unistd.h>
#if HAVE_VALGRIND_VALGRIND_H
#endif
#include "sd-dhcp-client.h"
+#include "sd-dhcp-lease.h"
#include "sd-event.h"
#include "alloc-util.h"
#include "ether-addr-util.h"
#include "fd-util.h"
#include "log.h"
-#include "random-util.h"
#include "tests.h"
static struct hw_addr_data hw_addr = {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <net/if_arp.h>
-#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include "alloc-util.h"
#include "dhcp-option.h"
#include "dhcp-packet.h"
-#include "ether-addr-util.h"
-#include "log.h"
-#include "macro.h"
#include "memory-util.h"
#include "tests.h"
Copyright © 2013 Intel Corporation. All rights reserved.
***/
-#include <errno.h>
#include <net/if_arp.h>
#include "sd-dhcp-server.h"
#include "sd-event.h"
#include "dhcp-server-internal.h"
+#include "hashmap.h"
+#include "siphash24.h"
#include "tests.h"
static void test_pool(struct in_addr *address, unsigned size, int ret) {
#include <net/ethernet.h>
#include <net/if_arp.h>
-#include <stdbool.h>
#include <stdio.h>
-#include <sys/types.h>
+#include <stdlib.h>
#include <unistd.h>
#include "sd-dhcp6-client.h"
+#include "sd-dhcp6-protocol.h"
#include "sd-event.h"
-#include "dhcp-duid-internal.h"
#include "dhcp6-internal.h"
#include "dhcp6-lease-internal.h"
#include "dhcp6-protocol.h"
#include "fd-util.h"
-#include "macro.h"
+#include "in-addr-util.h"
#include "memory-util.h"
-#include "socket-util.h"
-#include "string-util.h"
#include "strv.h"
#include "tests.h"
#include "time-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <linux/veth.h>
-#include <net/if.h>
-#include <stdlib.h>
-#include <unistd.h>
+#include <net/ethernet.h>
#include "sd-event.h"
#include "sd-ipv4ll.h"
#include "sd-netlink.h"
-#include "alloc-util.h"
#include "in-addr-util.h"
#include "log.h"
#include "parse-util.h"
Copyright © 2014 Axis Communications AB. All rights reserved.
***/
-#include <errno.h>
#include <netinet/if_ether.h>
#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <unistd.h>
+#include "sd-event.h"
#include "sd-ipv4ll.h"
#include "arp-util.h"
#include "fd-util.h"
-#include "log.h"
-#include "socket-util.h"
+#include "in-addr-util.h"
#include "tests.h"
static bool verbose = false;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <arpa/inet.h>
-#include <errno.h>
-#include <net/ethernet.h>
+#include <linux/if_ether.h>
#include <stdio.h>
+#include <sys/socket.h>
#include <unistd.h>
#include "sd-event.h"
#include "sd-lldp-rx.h"
-#include "alloc-util.h"
#include "fd-util.h"
#include "lldp-network.h"
-#include "log.h"
-#include "macro.h"
-#include "string-util.h"
#include "tests.h"
#define TEST_LLDP_PORT "em1"
Copyright © 2017 Intel Corporation. All rights reserved.
***/
-#include <arpa/inet.h>
+#include <net/ethernet.h>
#include <netinet/icmp6.h>
#include <unistd.h>
+#include "sd-event.h"
+#include "sd-ndisc-protocol.h"
#include "sd-radv.h"
#include "alloc-util.h"
-#include "hexdecoct.h"
#include "icmp6-test-util.h"
+#include "in-addr-util.h"
#include "radv-internal.h"
#include "socket-util.h"
-#include "strv.h"
#include "tests.h"
static struct ether_addr mac_addr = {
Copyright © 2014 Intel Corporation. All rights reserved.
***/
-#include <arpa/inet.h>
#include <netinet/icmp6.h>
#include <unistd.h>
#include "hexdecoct.h"
#include "icmp6-packet.h"
#include "icmp6-test-util.h"
+#include "in-addr-util.h"
#include "ndisc-internal.h"
-#include "socket-util.h"
#include "strv.h"
#include "tests.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
+#include <netinet/icmp6.h>
+
+#include "sd-ndisc-protocol.h"
+#include "sd-netlink.h"
#include "alloc-util.h"
#include "build.h"
#include "netlink-util.h"
#include "network-common.h"
#include "parse-util.h"
-#include "socket-util.h"
+#include "set.h"
+#include "string-util.h"
#include "strv.h"
#include "time-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-
#include "dhcp-lease-internal.h"
-#include "log.h"
-#include "macro.h"
-#include "string-util.h"
#include "strv.h"
#include "tests.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-
#include "sd-bus.h"
#include "bus-common-errors.h"
#include "bus-internal.h"
#include "bus-socket.h"
#include "fd-util.h"
+#include "format-util.h"
#include "log.h"
#include "namespace-util.h"
#include "process-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-bus.h"
+#include "forward.h"
int bus_container_connect_socket(sd_bus *b);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#if HAVE_VALGRIND_MEMCHECK_H
-#include <valgrind/memcheck.h>
-#endif
-
-#include <errno.h>
-#include <stddef.h>
-
#include "sd-bus.h"
#include "alloc-util.h"
#include "bus-control.h"
#include "bus-internal.h"
#include "bus-message.h"
-#include "capability-util.h"
#include "fd-util.h"
#include "log.h"
+#include "pidref.h"
#include "process-util.h"
-#include "stdio-util.h"
#include "string-util.h"
#include "strv.h"
#include "user-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-bus.h"
+#include "forward.h"
int bus_add_match_internal(sd_bus *bus, const char *match, uint64_t timeout_usec, uint64_t *ret_counter);
int bus_add_match_internal_async(sd_bus *bus, sd_bus_slot **ret, const char *match, sd_bus_message_handler_t callback, void *userdata, uint64_t timeout_usec);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <sys/types.h>
#include <unistd.h>
-#include "alloc-util.h"
+#include "sd-bus.h"
+
#include "bus-internal.h"
#include "bus-message.h"
#include "bus-signature.h"
#include "bus-type.h"
-#include "log.h"
#include "string-util.h"
_public_ int sd_bus_message_send(sd_bus_message *reply) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/capability.h>
-#include <stdlib.h>
+
+#include "sd-bus.h"
#include "alloc-util.h"
#include "audit-util.h"
#include "hexdecoct.h"
#include "nulstr-util.h"
#include "parse-util.h"
+#include "pidref.h"
#include "process-util.h"
#include "string-util.h"
#include "strv.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
+#include "forward.h"
-#include "sd-bus.h"
-
-#include "pidref.h"
-#include "user-util.h"
-
-struct sd_bus_creds {
+typedef struct sd_bus_creds {
bool allocated;
unsigned n_ref;
char *cgroup_root;
char *description, *unescaped_description;
-};
+} sd_bus_creds;
#define SD_BUS_CREDS_INIT_FIELDS \
.uid = UID_INVALID, \
#include "bus-internal.h"
#include "bus-message.h"
#include "json-util.h"
-#include "macro.h"
-#include "memory-util.h"
+#include "string-util.h"
#include "time-util.h"
static int json_transform_one(sd_bus_message *m, sd_json_variant **ret);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <sys/time.h>
+#include "sd-bus.h"
#include "alloc-util.h"
#include "ansi-color.h"
#include "format-util.h"
#include "glyph-util.h"
#include "log.h"
-#include "macro.h"
#include "pcapng.h"
#include "string-util.h"
#include "strv.h"
-#include "terminal-util.h"
+#include "time-util.h"
static char* indent(unsigned level, uint64_t flags) {
if (FLAGS_SET(flags, SD_BUS_MESSAGE_DUMP_SUBTREE_ONLY) && level > 0)
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-#include <stdio.h>
-
-#include "sd-bus.h"
+#include "forward.h"
int bus_creds_dump(sd_bus_creds *c, FILE *f, bool terse);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-
#include "sd-bus.h"
#include "alloc-util.h"
#include "bus-error.h"
#include "errno-list.h"
#include "errno-util.h"
-#include "log.h"
#include "string-util.h"
-#include "strv.h"
BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_standard_errors[] = {
SD_BUS_ERROR_MAP(SD_BUS_ERROR_FAILED, EACCES),
if (e && e->message)
return e->message;
- return strerror_r(abs(error), buf, ERRNO_BUF_LEN);
+ return strerror_r(ABS(error), buf, ERRNO_BUF_LEN);
}
static bool map_ok(const sd_bus_error_map *map) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
-#include "sd-bus.h"
+#include "sd-bus-protocol.h"
#include "errno-util.h"
-#include "macro.h"
+#include "forward.h"
bool bus_error_is_dirty(sd_bus_error *e);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "sd-bus.h"
+
#include "alloc-util.h"
+#include "bus-error.h"
#include "bus-internal.h"
#include "bus-message.h"
#include "escape.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <pthread.h>
+#include "sd-id128.h"
-#include "sd-bus.h"
-
-#include "bus-error.h"
#include "bus-kernel.h"
#include "bus-match.h"
#include "constants.h"
-#include "hashmap.h"
+#include "forward.h"
#include "list.h"
-#include "prioq.h"
#include "runtime-scope.h"
#include "socket-util.h"
-#include "time-util.h"
/* Note that we use the new /run prefix here (instead of /var/run) since we require them to be aliases and
* that way we become independent of /var being mounted */
_BUS_SLOT_INVALID = -EINVAL,
} BusSlotType;
-struct sd_bus_slot {
+typedef struct sd_bus_slot {
unsigned n_ref;
BusSlotType type:8;
struct node_object_manager node_object_manager;
struct node_vtable node_vtable;
};
-};
+} sd_bus_slot;
enum bus_state {
BUS_UNSET,
BUS_AUTH_ANONYMOUS
};
-struct sd_bus {
+typedef struct sd_bus {
unsigned n_ref;
enum bus_state state;
/* zero means use value specified by $SYSTEMD_BUS_TIMEOUT= environment variable or built-in default */
usec_t method_call_timeout;
-};
+} sd_bus;
/* For method calls we timeout at 25s, like in the D-Bus reference implementation */
#define BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC))
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <stdio.h>
+
+#include "sd-bus-vtable.h"
+
#include "bus-internal.h"
#include "bus-introspect.h"
#include "bus-objects.h"
-#include "bus-protocol.h"
#include "bus-signature.h"
-#include "fd-util.h"
-#include "fileio.h"
-#include "log.h"
-#include "memory-util.h"
#include "memstream-util.h"
+#include "ordered-set.h"
#include "string-util.h"
#define BUS_INTROSPECT_DOCTYPE \
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdio.h>
-
-#include "sd-bus.h"
-
+#include "forward.h"
#include "memstream-util.h"
-#include "ordered-set.h"
struct introspect {
MemStream m;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#if HAVE_VALGRIND_MEMCHECK_H
-#include <valgrind/memcheck.h>
-#endif
-
-#include <fcntl.h>
-#include <malloc.h>
#include <sys/mman.h>
-#include <sys/prctl.h>
-#include "alloc-util.h"
-#include "bus-internal.h"
#include "bus-kernel.h"
-#include "bus-label.h"
-#include "bus-message.h"
-#include "capability-util.h"
+#include "bus-internal.h"
#include "fd-util.h"
-#include "fileio.h"
-#include "format-util.h"
-#include "log.h"
-#include "memfd-util.h"
#include "memory-util.h"
-#include "parse-util.h"
-#include "stdio-util.h"
-#include "string-util.h"
-#include "strv.h"
-#include "user-util.h"
void close_and_munmap(int fd, void *address, size_t size) {
if (size > 0) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-bus.h"
+#include "forward.h"
#define MEMFD_CACHE_MAX 32
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "sd-bus.h"
+
#include "alloc-util.h"
#include "bus-internal.h"
#include "bus-match.h"
#include "bus-message.h"
-#include "fd-util.h"
-#include "fileio.h"
+#include "hashmap.h"
#include "hexdecoct.h"
-#include "log.h"
#include "memstream-util.h"
#include "sort-util.h"
+#include "stdio-util.h"
#include "string-util.h"
#include "strv.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdio.h>
-
-#include "sd-bus.h"
-
-#include "hashmap.h"
+#include "forward.h"
enum bus_match_node_type {
BUS_MATCH_ROOT,
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <fcntl.h>
#include <sys/mman.h>
#include "sd-bus.h"
#include "memory-util.h"
#include "string-util.h"
#include "strv.h"
-#include "time-util.h"
#include "utf8.h"
static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
#pragma once
#include <byteswap.h>
-#include <stdbool.h>
-#include <sys/socket.h>
+#include <sys/uio.h>
-#include "sd-bus.h"
+#include "sd-bus-protocol.h"
#include "bus-creds.h"
#include "bus-protocol.h"
-#include "macro.h"
-#include "time-util.h"
+#include "forward.h"
+#include "memory-util.h"
struct bus_container {
char enclosing;
bool is_zero:1;
};
-struct sd_bus_message {
+typedef struct sd_bus_message {
/* Caveat: a message can be referenced in two different ways: the main (user-facing) way will also
* pin the bus connection object the message is associated with. The secondary way ("queued") is used
* when a message is in the read or write queues of the bus connection object, which will not pin the
unsigned n_header_offsets;
uint64_t read_counter;
-};
+} sd_bus_message;
static inline bool BUS_MESSAGE_NEED_BSWAP(sd_bus_message *m) {
return m->header->endian != BUS_NATIVE_ENDIAN;
#include <linux/capability.h>
+#include "sd-bus.h"
+
#include "alloc-util.h"
#include "bus-internal.h"
#include "bus-introspect.h"
#include "bus-signature.h"
#include "bus-slot.h"
#include "bus-type.h"
-#include "log.h"
+#include "ordered-set.h"
#include "set.h"
#include "string-util.h"
#include "strv.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "bus-internal.h"
-#include "bus-introspect.h"
+#include "forward.h"
+
+struct node;
const sd_bus_vtable* bus_vtable_next(const sd_bus_vtable *vtable, const sd_bus_vtable *v);
bool bus_vtable_has_names(const sd_bus_vtable *vtable);
#include <endian.h>
-#include "macro.h"
+#include "forward.h"
/* Packet header */
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include "sd-bus.h"
+#include "sd-bus-protocol.h"
-#include "assert-util.h"
#include "bus-signature.h"
#include "bus-type.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-#include <stddef.h>
+#include "forward.h"
bool signature_is_single(const char *s, bool allow_dict_entry);
bool signature_is_pair(const char *s);
#include "bus-control.h"
#include "bus-objects.h"
#include "bus-slot.h"
-#include "log.h"
+#include "prioq.h"
#include "set.h"
#include "string-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-bus.h"
-
#include "bus-internal.h"
+#include "forward.h"
sd_bus_slot *bus_slot_allocate(sd_bus *bus, bool floating, BusSlotType type, size_t extra, void *userdata);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <endian.h>
+#include <grp.h>
#include <poll.h>
#include <stdlib.h>
+#include <sys/inotify.h>
#include <unistd.h>
#include "sd-bus.h"
#include "bus-internal.h"
#include "bus-message.h"
#include "bus-socket.h"
+#include "errno-util.h"
#include "escape.h"
#include "fd-util.h"
-#include "format-util.h"
#include "fs-util.h"
#include "hexdecoct.h"
#include "io-util.h"
#include "iovec-util.h"
#include "log.h"
-#include "macro.h"
#include "memory-util.h"
#include "path-util.h"
#include "process-util.h"
#include "random-util.h"
-#include "signal-util.h"
#include "stdio-util.h"
#include "string-util.h"
+#include "time-util.h"
#include "user-util.h"
#include "utf8.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
-#include "sd-bus.h"
+#include "forward.h"
void bus_socket_setup(sd_bus *b);
#include "alloc-util.h"
#include "bus-internal.h"
#include "bus-track.h"
+#include "hashmap.h"
#include "log.h"
#include "string-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-typedef struct sd_bus_track sd_bus_track;
+#include "forward.h"
void bus_track_dispatch(sd_bus_track *track);
void bus_track_close(sd_bus_track *track);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-
#include "sd-bus.h"
#include "bus-internal.h"
#include "bus-type.h"
-#include "log.h"
bool bus_type_is_valid(char c) {
static const char valid[] = {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
-#include "macro.h"
+#include "forward.h"
bool bus_type_is_valid(char c) _const_;
bool bus_type_is_basic(char c) _const_;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "sd-bus.h"
+
#include "alloc-util.h"
#include "bus-internal.h"
#include "bus-match.h"
#include "env-util.h"
-#include "fd-util.h"
-#include "fileio.h"
#include "fuzz.h"
#include "memstream-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "sd-bus.h"
+
#include "alloc-util.h"
-#include "bus-dump.h"
#include "bus-message.h"
#include "env-util.h"
-#include "fd-util.h"
-#include "fileio.h"
#include "fuzz.h"
#include "memstream-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <endian.h>
#include <netdb.h>
+#include <poll.h>
#include <pthread.h>
-#include <signal.h>
#include <stdlib.h>
-#include <sys/mman.h>
#include <sys/stat.h>
-#include <sys/wait.h>
#include <threads.h>
#include <unistd.h>
#include "sd-bus.h"
+#include "sd-event.h"
#include "af-list.h"
#include "alloc-util.h"
#include "bus-container.h"
#include "bus-control.h"
+#include "bus-error.h"
#include "bus-internal.h"
#include "bus-kernel.h"
#include "bus-label.h"
#include "bus-track.h"
#include "bus-type.h"
#include "cgroup-util.h"
-#include "constants.h"
#include "errno-util.h"
#include "fd-util.h"
#include "format-util.h"
#include "io-util.h"
#include "log.h"
#include "log-context.h"
-#include "macro.h"
#include "memory-util.h"
-#include "missing_syscall.h"
#include "origin-id.h"
#include "parse-util.h"
#include "path-util.h"
+#include "prioq.h"
#include "process-util.h"
-#include "stdio-util.h"
+#include "set.h"
#include "string-util.h"
#include "strv.h"
+#include "time-util.h"
#include "user-util.h"
#define log_debug_bus_message(m) \
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <pthread.h>
+#include <sched.h>
+#include <stdlib.h>
#include <sys/resource.h>
#include <sys/wait.h>
#include <unistd.h>
#include "alloc-util.h"
#include "bus-internal.h"
-#include "bus-kernel.h"
-#include "constants.h"
#include "fd-util.h"
-#include "string-util.h"
#include "tests.h"
#include "time-util.h"
#include <fcntl.h>
#include <pthread.h>
-#include <stdlib.h>
#include <unistd.h>
#include "sd-bus.h"
#include "fd-util.h"
#include "format-util.h"
#include "log.h"
-#include "macro.h"
#include "string-util.h"
#include "tests.h"
+#include "time-util.h"
static int match_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
log_info("Match triggered! destination=%s interface=%s member=%s",
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <stdio.h>
#include <unistd.h>
#include "sd-bus.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <math.h>
-#include <stdlib.h>
/* We make an exception here to our usual "include system headers first" rule because we need one of these
* macros to disable a warning triggered by the glib headers. */
#include "sd-bus.h"
#include "alloc-util.h"
-#include "bus-dump.h"
#include "bus-label.h"
#include "bus-message.h"
#include "bus-util.h"
#include "escape.h"
-#include "fd-util.h"
-#include "fileio.h"
#include "log.h"
#include "memstream-util.h"
#include "tests.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "sd-bus.h"
+
+#include "bus-internal.h"
#include "bus-match.h"
#include "bus-message.h"
-#include "bus-slot.h"
#include "log.h"
-#include "macro.h"
#include "memory-util.h"
#include "tests.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <pthread.h>
-#include <stdlib.h>
#include "sd-bus.h"
#include "alloc-util.h"
-#include "bus-dump.h"
#include "bus-internal.h"
#include "bus-message.h"
#include "log.h"
-#include "macro.h"
#include "strv.h"
#include "tests.h"
#include "sd-bus.h"
#include "bus-dump.h"
-#include "bus-util.h"
#include "fd-util.h"
+#include "pidref.h"
#include "process-util.h"
#include "socket-util.h"
-#include "sort-util.h"
#include "tests.h"
#include "user-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include "sd-bus.h"
#include "main-func.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <pthread.h>
-#include <stdlib.h>
+#include <sys/socket.h>
#include "sd-bus.h"
-#include "bus-internal.h"
+#include "bus-error.h"
#include "log.h"
-#include "macro.h"
#include "memory-util.h"
#include "string-util.h"
#include "tests.h"
#include "bus-internal.h"
#include "bus-signature.h"
#include "log.h"
-#include "string-util.h"
#include "tests.h"
int main(int argc, char *argv[]) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <sys/socket.h>
#include "sd-bus.h"
+#include "sd-event.h"
-#include "macro.h"
#include "tests.h"
static bool track_cb_called_x = false;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <stdbool.h>
-#include <stddef.h>
-
/* We use system assert.h here, because we don't want to keep macro.h and log.h C++ compatible */
#undef NDEBUG
#include <assert.h>
-#include <errno.h>
#include <stdio.h>
#include "sd-bus.h"
#include "sd-bus-vtable.h"
#ifndef __cplusplus
+# include "alloc-util.h"
# include "bus-objects.h"
# include "log.h"
#endif
#include "socket-util.h"
#include "string-util.h"
#include "tests.h"
+#include "time-util.h"
#include "tmpfile-util.h"
static int method_foobar(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <limits.h>
#include <mqueue.h>
#include <netinet/in.h>
#include <poll.h>
-#include <stdarg.h>
-#include <stddef.h>
#include <stdio.h>
-#include <stdlib.h>
#include <sys/stat.h>
#include <sys/un.h>
#include <unistd.h>
#include "sd-daemon.h"
#include "alloc-util.h"
+#include "errno-util.h"
#include "extract-word.h"
#include "fd-util.h"
#include "fs-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
-#include "sd-device.h"
+#include "forward.h"
typedef enum MatchInitializedType {
MATCH_INITIALIZED_NO, /* only devices without a db entry */
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <fcntl.h>
#include <fnmatch.h>
-#include <unistd.h>
#include "sd-device.h"
#include "device-util.h"
#include "dirent-util.h"
#include "fd-util.h"
+#include "log.h"
+#include "path-util.h"
#include "set.h"
#include "sort-util.h"
#include "string-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <fnmatch.h>
+#include "sd-device.h"
#include "alloc-util.h"
#include "device-filter.h"
+#include "hashmap.h"
#include "path-util.h"
+#include "set.h"
#include "strv.h"
int update_match_strv(Hashmap **match_strv, const char *key, const char *value, bool clear_on_null) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
-#include "sd-device.h"
-
-#include "hashmap.h"
-#include "set.h"
+#include "forward.h"
int update_match_strv(Hashmap **match_strv, const char *key, const char *value, bool clear_on_null);
bool device_match_sysattr(sd_device *device, Hashmap *match_sysattr, Hashmap *nomatch_sysattr);
#include "sd-device.h"
-#include "device-private.h"
-#include "hashmap.h"
-#include "set.h"
-#include "time-util.h"
+#include "forward.h"
+#include "iterator.h"
#define LATEST_UDEV_DATABASE_VERSION 1
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <errno.h>
-
-#include "sd-device.h"
-
-#include "socket-util.h"
+#include "forward.h"
typedef enum MonitorNetlinkGroup {
MONITOR_GROUP_NONE,
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <linux/filter.h>
#include <linux/netlink.h>
#include <linux/sockios.h>
#include "hashmap.h"
#include "io-util.h"
#include "iovec-util.h"
+#include "log.h"
#include "log-context.h"
-#include "missing_socket.h"
#include "mountpoint-util.h"
#include "set.h"
+#include "socket-util.h"
#include "stat-util.h"
#include "string-util.h"
-#include "strv.h"
#include "uid-range.h"
#define log_monitor(m, format, ...) \
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <ctype.h>
-#include <net/if.h>
-#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include <unistd.h>
#include "sd-device.h"
#include "device-internal.h"
#include "device-private.h"
#include "device-util.h"
+#include "extract-word.h"
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
#include "hashmap.h"
-#include "macro.h"
#include "mkdir.h"
#include "nulstr-util.h"
#include "parse-util.h"
#include "path-util.h"
#include "set.h"
-#include "stdio-util.h"
#include "string-table.h"
#include "string-util.h"
#include "strv.h"
#include "strxcpyx.h"
+#include "time-util.h"
#include "tmpfile-util.h"
#include "user-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <dirent.h>
-#include <inttypes.h>
-#include <stdbool.h>
-#include <sys/stat.h>
-#include <sys/types.h>
+#include "sd-device.h" /* IWYU pragma: export */
-#include "sd-device.h"
+#include "forward.h"
-#include "chase.h"
-#include "macro.h"
+typedef enum ChaseFlags ChaseFlags;
int device_new_from_mode_and_devnum(sd_device **ret, mode_t mode, dev_t devnum);
int device_new_from_nulstr(sd_device **ret, char *nulstr, size_t len);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include "alloc-util.h"
#include "device-private.h"
#include "device-util.h"
#include "devnum-util.h"
return strdup_to(ret, devname);
}
+int devname_from_stat_rdev(const struct stat *st, char **ret) {
+ assert(st);
+ return devname_from_devnum(st->st_mode, st->st_rdev, ret);
+}
+
int device_open_from_devnum(mode_t mode, dev_t devnum, int flags, char **ret_devname) {
_cleanup_(sd_device_unrefp) sd_device *dev = NULL;
_cleanup_close_ int fd = -EBADF;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-
#include "sd-device.h"
-#include "alloc-util.h"
+#include "forward.h"
#include "log.h"
-#include "macro.h"
#define device_unref_and_replace(a, b) \
unref_and_replace_full(a, b, sd_device_ref, sd_device_unref)
#define log_device_error_errno(device, error, ...) log_device_full_errno(device, LOG_ERR, error, __VA_ARGS__)
int devname_from_devnum(mode_t mode, dev_t devnum, char **ret);
-static inline int devname_from_stat_rdev(const struct stat *st, char **ret) {
- assert(st);
- return devname_from_devnum(st->st_mode, st->st_rdev, ret);
-}
+int devname_from_stat_rdev(const struct stat *st, char **ret);
int device_open_from_devnum(mode_t mode, dev_t devnum, int flags, char **ret_devname);
char** device_make_log_fields(sd_device *device);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <ctype.h>
-#include <net/if.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
+#include <unistd.h>
#include "sd-device.h"
+#include "sd-id128.h"
#include "alloc-util.h"
#include "chase.h"
#include "devnum-util.h"
#include "dirent-util.h"
#include "env-util.h"
+#include "errno-util.h"
+#include "extract-word.h"
#include "fd-util.h"
#include "fileio.h"
-#include "format-util.h"
#include "fs-util.h"
#include "hashmap.h"
-#include "id128-util.h"
-#include "macro.h"
#include "missing_magic.h"
#include "netlink-util.h"
#include "parse-util.h"
#include "path-util.h"
#include "set.h"
#include "socket-util.h"
+#include "stat-util.h"
#include "stdio-util.h"
#include "string-util.h"
#include "strv.h"
-#include "strxcpyx.h"
-#include "user-util.h"
+#include "time-util.h"
int device_new_aux(sd_device **ret) {
sd_device *device;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "sd-device.h"
+
#include "device-util.h"
#include "mountpoint-util.h"
#include "tests.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <stdbool.h>
#include <unistd.h>
#include "sd-device.h"
#include "device-private.h"
#include "device-util.h"
#include "io-util.h"
-#include "macro.h"
#include "mountpoint-util.h"
#include "path-util.h"
+#include "socket-util.h"
#include "stat-util.h"
#include "string-util.h"
#include "tests.h"
-#include "virt.h"
+#include "time-util.h"
static void prepare_loopback(sd_device **ret) {
_cleanup_(sd_device_unrefp) sd_device *dev = NULL;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
#include "sd-device.h"
#define handle_error_errno(error, msg) \
({ \
- errno = abs(error); \
+ errno = ABS(error); \
perror(msg); \
EXIT_FAILURE; \
})
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
-#include "device-enumerator-private.h"
+#include "sd-event.h"
+
#include "device-internal.h"
#include "device-private.h"
#include "device-util.h"
#include "nulstr-util.h"
#include "path-util.h"
#include "rm-rf.h"
+#include "set.h"
#include "stat-util.h"
#include "string-util.h"
#include "tests.h"
-#include "time-util.h"
#include "tmpfile-util.h"
#include "udev-util.h"
-#pragma once
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
-#include <sys/epoll.h>
-#include <sys/timerfd.h>
-#include <sys/wait.h>
+#include <signal.h>
+#include <sys/signalfd.h>
#include "sd-event.h"
-#include "hashmap.h"
+#include "forward.h"
#include "inotify-util.h"
#include "list.h"
-#include "prioq.h"
#include "ratelimit.h"
typedef enum EventSourceType {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
+#include "sd-event.h"
-#include "errno-util.h"
+#include "alloc-util.h"
#include "event-source.h"
#include "event-util.h"
#include "fd-util.h"
+#include "hash-funcs.h"
#include "log.h"
+#include "pidref.h"
#include "string-util.h"
+#include "time-util.h"
#define SI_FLAG_FORWARD (INT32_C(1) << 30)
#define SI_FLAG_POSITIVE (INT32_C(1) << 29)
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
#include "sd-event.h"
-#include "hash-funcs.h"
-#include "pidref.h"
+#include "forward.h"
extern const struct hash_ops event_source_hash_ops;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <sys/epoll.h>
+#include <stdlib.h>
#include <sys/timerfd.h>
#include <sys/wait.h>
#include <threads.h>
#include "sd-messages.h"
#include "alloc-util.h"
-#include "env-util.h"
+#include "errno-util.h"
#include "event-source.h"
#include "fd-util.h"
-#include "fs-util.h"
+#include "format-util.h"
#include "glyph-util.h"
#include "hashmap.h"
#include "hexdecoct.h"
#include "list.h"
+#include "log.h"
#include "logarithm.h"
-#include "macro.h"
#include "mallinfo-util.h"
#include "memory-util.h"
#include "missing_magic.h"
-#include "missing_syscall.h"
#include "missing_wait.h"
#include "origin-id.h"
#include "path-util.h"
#include "psi-util.h"
#include "set.h"
#include "signal-util.h"
+#include "siphash24.h"
#include "socket-util.h"
#include "stat-util.h"
#include "string-table.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#if HAVE_PIDFD_OPEN
-#include <sys/pidfd.h>
-#endif
#include <sys/wait.h>
#include <unistd.h>
#include "sd-event.h"
#include "alloc-util.h"
-#include "exec-util.h"
#include "fd-util.h"
#include "fs-util.h"
#include "log.h"
-#include "macro.h"
-#include "missing_syscall.h"
#include "parse-util.h"
#include "path-util.h"
+#include "pidfd-util.h"
#include "process-util.h"
#include "random-util.h"
#include "rm-rf.h"
#include "stdio-util.h"
#include "string-util.h"
#include "tests.h"
+#include "time-util.h"
#include "tmpfile-util.h"
static int prepare_handler(sd_event_source *s, void *userdata) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdint.h>
#include <sys/stat.h>
-#include "constants.h"
-#include "hashmap.h"
+#include "forward.h"
+#include "iterator.h"
#include "sparse-endian.h"
#define HWDB_SIG { 'K', 'S', 'L', 'P', 'H', 'H', 'R', 'H' }
Copyright © 2008 Alan Jenkins <alan.christopher.jenkins@googlemail.com>
***/
-#include <errno.h>
#include <fnmatch.h>
-#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include "log.h"
#include "nulstr-util.h"
#include "string-util.h"
-#include "time-util.h"
struct linebuf {
char bytes[LINE_MAX];
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <fcntl.h>
+#include <stdlib.h>
+#include <sys/socket.h>
#include <unistd.h>
#include "fd-util.h"
#include "fs-util.h"
-#include "hexdecoct.h"
+#include "hash-funcs.h"
#include "id128-util.h"
#include "io-util.h"
-#include "log.h"
#include "namespace-util.h"
#include "process-util.h"
#include "sha256.h"
-#include "stdio-util.h"
+#include "siphash24.h"
#include "string-util.h"
#include "strv.h"
#include "sync-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <fcntl.h>
-#include <stdbool.h>
-
#include "sd-id128.h"
#include "errno-util.h"
-#include "hash-funcs.h"
-#include "macro.h"
+#include "forward.h"
bool id128_is_valid(const char *s) _pure_;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <fcntl.h>
+#include <stdlib.h>
#include <threads.h>
-#include <unistd.h>
#include "sd-id128.h"
#include "hexdecoct.h"
#include "hmac.h"
#include "id128-util.h"
-#include "io-util.h"
#include "keyring-util.h"
-#include "log.h"
-#include "macro.h"
#include "missing_syscall.h"
#include "path-util.h"
#include "random-util.h"
#include <stdio.h>
-#include "alloc-util.h"
-#include "macro.h"
+#include "forward.h"
const char* audit_type_to_string(int type);
int audit_type_from_string(const char *s);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <fcntl.h>
#include <locale.h>
#include <stdio.h>
+#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
#include "sd-id128.h"
#include "log.h"
#include "memory-util.h"
#include "mkdir.h"
-#include "path-util.h"
#include "siphash24.h"
#include "sort-util.h"
#include "sparse-endian.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-#include <stdio.h>
-
-#include "sd-id128.h"
-
-#include "hashmap.h"
+#include "forward.h"
int catalog_import_file(OrderedHashmap **h, const char *path);
int catalog_update(const char *database, const char *root, const char* const *dirs);
* Contact: fsprg@point-at-infinity.org
*/
-#include <inttypes.h>
-#include <sys/types.h>
-
-#include "macro.h"
+#include "forward.h"
#ifdef __cplusplus
extern "C" {
#include <fcntl.h>
#include <sys/mman.h>
+#include <sys/stat.h>
+#include "alloc-util.h"
#include "fd-util.h"
#include "fsprg.h"
#include "gcrypt-util.h"
#include "journal-file.h"
#include "log.h"
#include "memory-util.h"
+#include "string-util.h"
#include "time-util.h"
static void* fssheader_free(FSSHeader *p) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
+#include "forward.h"
#include "journal-file.h"
int journal_file_append_tag(JournalFile *f);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <errno.h>
-
#include "sd-id128.h"
-#include "macro.h"
+#include "forward.h"
#include "sparse-endian.h"
/*
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <fcntl.h>
#include <linux/magic.h>
#include <pthread.h>
-#include <stddef.h>
+#include <stdlib.h>
#include <sys/mman.h>
#include <sys/statvfs.h>
#include <sys/uio.h>
#include "format-util.h"
#include "fs-util.h"
#include "gcrypt-util.h"
+#include "hashmap.h"
#include "id128-util.h"
#include "journal-authenticate.h"
#include "journal-def.h"
#include "log-ratelimit.h"
#include "lookup3.h"
#include "memory-util.h"
-#include "missing_fs.h"
#include "parse-util.h"
#include "path-util.h"
#include "prioq.h"
#include "random-util.h"
#include "ratelimit.h"
-#include "set.h"
#include "sort-util.h"
#include "stat-util.h"
#include "string-table.h"
#include "string-util.h"
#include "strv.h"
+#include "siphash24.h"
#include "sync-util.h"
+#include "time-util.h"
#include "user-util.h"
#include "xattr-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <inttypes.h>
-#include <sys/uio.h>
-
-#include "sd-event.h"
-#include "sd-id128.h"
-
#include "compress.h"
+#include "forward.h"
#include "gcrypt-util.h"
-#include "hashmap.h"
#include "journal-def.h"
#include "missing_fcntl.h"
#include "mmap-cache.h"
#include "sparse-endian.h"
-#include "time-util.h"
typedef struct JournalMetrics {
/* For all these: UINT64_MAX means "pick automatically", and 0 means "no limit enforced" */
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <inttypes.h>
-#include <stdbool.h>
-#include <sys/types.h>
-
-#include "sd-id128.h"
-#include "sd-journal.h"
-
-#include "hashmap.h"
-#include "journal-def.h"
#include "journal-file.h"
#include "list.h"
-#include "prioq.h"
+#include "forward.h"
+#include "time-util.h"
#define JOURNAL_FILES_MAX 7168u
MATCH_AND_TERM,
} MatchType;
-struct Match {
+typedef struct Match {
MatchType type;
Match *parent;
LIST_FIELDS(Match, matches);
/* For terms */
LIST_HEAD(Match, matches);
-};
+} Match;
-struct Location {
+typedef struct Location {
LocationType type;
bool seqnum_set:1;
sd_id128_t boot_id;
uint64_t xor_hash;
-};
+} Location;
-struct Directory {
+typedef struct Directory {
sd_journal *journal;
char *path;
int wd;
bool is_root;
unsigned last_seen_generation;
-};
+} Directory;
typedef struct NewestByBootId {
sd_id128_t boot_id;
Prioq *prioq; /* JournalFile objects ordered by monotonic timestamp of last update. */
} NewestByBootId;
-struct sd_journal {
+typedef struct sd_journal {
int toplevel_fd;
char *path;
Hashmap *directories_by_wd;
Hashmap *errors;
-};
+} sd_journal;
char* journal_make_match_string(sd_journal *j);
void journal_print_header(sd_journal *j);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <fcntl.h>
-#include <printf.h>
-#include <stddef.h>
-#include <sys/un.h>
#include <unistd.h>
#if HAVE_VALGRIND_VALGRIND_H
# include <valgrind/valgrind.h>
#include "log.h"
#include "memfd-util.h"
#include "missing_mman.h"
-#include "missing_syscall.h"
#include "process-util.h"
#include "socket-util.h"
#include "stdio-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-#include <stddef.h>
-
#include "syslog-util.h"
int journal_fd_nonblock(bool nonblock);
#include "format-util.h"
#include "fs-util.h"
#include "journal-def.h"
-#include "journal-file.h"
#include "journal-internal.h"
#include "journal-vacuum.h"
#include "log.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <inttypes.h>
-#include <stdbool.h>
-
-#include "time-util.h"
+#include "forward.h"
int journal_directory_vacuum(const char *directory, uint64_t max_use, uint64_t n_max_files, usec_t max_retention_usec, usec_t *oldest_usec, bool verbose);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
-#include <stddef.h>
#include <sys/mman.h>
-#include <unistd.h>
#include "alloc-util.h"
#include "ansi-color.h"
#include "journal-file.h"
#include "journal-verify.h"
#include "log.h"
-#include "lookup3.h"
-#include "macro.h"
#include "terminal-util.h"
+#include "time-util.h"
#include "tmpfile-util.h"
static void draw_progress(uint64_t p, usec_t *last_usec) {
/* SPDX-License-Identifier: LicenseRef-lookup3-public-domain */
#pragma once
-#include <inttypes.h>
-#include <sys/types.h>
-
-#include "macro.h"
+#include "forward.h"
uint32_t jenkins_hashword(const uint32_t *k, size_t length, uint32_t initval) _pure_;
void jenkins_hashword2(const uint32_t *k, size_t length, uint32_t *pc, uint32_t *pb);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <stdlib.h>
#include <sys/mman.h>
#include "hashmap.h"
#include "list.h"
#include "log.h"
-#include "macro.h"
#include "memory-util.h"
#include "mmap-cache.h"
#include "sigbus.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <errno.h>
-#include <stdbool.h>
-#include <sys/stat.h>
-
+#include "forward.h"
#include "journal-def.h"
-#include "memory-util.h"
typedef struct MMapCache MMapCache;
typedef struct MMapFileDescriptor MMapFileDescriptor;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <fcntl.h>
-#include <inttypes.h>
-#include <linux/magic.h>
#include <poll.h>
-#include <stddef.h>
+#include <stdlib.h>
#include <sys/inotify.h>
#include <sys/vfs.h>
#include <unistd.h>
#include "alloc-util.h"
#include "catalog.h"
-#include "compress.h"
#include "dirent-util.h"
#include "env-file.h"
#include "escape.h"
+#include "extract-word.h"
#include "fd-util.h"
#include "fileio.h"
#include "format-util.h"
-#include "fs-util.h"
#include "hashmap.h"
#include "hostname-util.h"
#include "id128-util.h"
#include "journal-file.h"
#include "journal-internal.h"
#include "list.h"
+#include "log.h"
#include "lookup3.h"
#include "nulstr-util.h"
#include "origin-id.h"
#include "path-util.h"
#include "prioq.h"
-#include "process-util.h"
#include "replace-var.h"
+#include "set.h"
#include "sort-util.h"
#include "stat-util.h"
#include "stdio-util.h"
#include "string-util.h"
#include "strv.h"
#include "syslog-util.h"
+#include "time-util.h"
#include "uid-classification.h"
#define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC)
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <fcntl.h>
#include <locale.h>
#include <unistd.h>
#include "alloc-util.h"
#include "catalog.h"
#include "fd-util.h"
-#include "fs-util.h"
+#include "hashmap.h"
#include "log.h"
-#include "macro.h"
-#include "path-util.h"
-#include "string-util.h"
-#include "strv.h"
#include "tests.h"
#include "tmpfile-util.h"
#include <unistd.h>
#include "chattr-util.h"
-#include "fd-util.h"
-#include "fs-util.h"
#include "iovec-util.h"
#include "journal-file-util.h"
#include "log.h"
#include "parse-util.h"
#include "random-util.h"
#include "rm-rf.h"
-#include "strv.h"
-#include "terminal-util.h"
#include "tests.h"
+#include "time-util.h"
#include "tmpfile-util.h"
static int journal_append_message(JournalFile *mj, const char *message) {
#include "sd-journal.h"
-#include "journal-internal.h"
-#include "log.h"
-#include "macro.h"
#include "tests.h"
int main(int argc, char *argv[]) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <stdlib.h>
#include <unistd.h>
#include "journal-file.h"
#include "tests.h"
-#include "user-util.h"
static void test_journal_file_parse_uid_from_filename_simple(
const char *path,
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
-#include <unistd.h>
+#include <stdlib.h>
#include "sd-journal.h"
#include "journal-file-util.h"
#include "journal-internal.h"
#include "logs-show.h"
-#include "macro.h"
#include "output-mode.h"
#include "path-util.h"
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
+#include "time-util.h"
#include "tmpfile-util.h"
static int open_archive_file(sd_journal **ret) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <stdlib.h>
#include <unistd.h>
#include "sd-journal.h"
#include "rm-rf.h"
#include "strv.h"
#include "tests.h"
+#include "time-util.h"
#include "tmpfile-util.h"
/* This program tests skipping around in a multi-file journal. */
#include "alloc-util.h"
#include "journal-internal.h"
-#include "log.h"
-#include "string-util.h"
#include "tests.h"
int main(int argc, char *argv[]) {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include "fileio.h"
#include "journal-send.h"
-#include "macro.h"
-#include "memory-util.h"
#include "tests.h"
TEST(journal_print) {
#include "journal-file-util.h"
#include "journal-internal.h"
#include "log.h"
-#include "macro.h"
#include "parse-util.h"
#include "rm-rf.h"
#include "tests.h"
+#include "time-util.h"
#define N_ENTRIES 200
#include <fcntl.h>
#include <stdio.h>
+#include <sys/stat.h>
#include <unistd.h>
#include "ansi-color.h"
#include "log.h"
#include "mmap-cache.h"
#include "rm-rf.h"
-#include "strv.h"
-#include "terminal-util.h"
#include "tests.h"
+#include "time-util.h"
#define N_ENTRIES 6000
#define RANDOM_RANGE 77
#include "log.h"
#include "rm-rf.h"
#include "tests.h"
+#include "time-util.h"
static bool arg_keep = false;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <fcntl.h>
-#include <stdlib.h>
#include <sys/mman.h>
#include <unistd.h>
#include "fd-util.h"
-#include "macro.h"
#include "mmap-cache.h"
#include "tests.h"
#include "tmpfile-util.h"
#pragma once
-#include <stdbool.h>
-
-#include "sd-json.h"
-
-#include "macro.h"
+#include "forward.h"
/* This header should include all prototypes only the JSON parser itself and
* its tests need access to. Normal code consuming the JSON parser should not
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/in.h>
#include <sys/sysmacros.h>
#include "alloc-util.h"
#include "errno-util.h"
#include "fd-util.h"
#include "glyph-util.h"
-#include "in-addr-util.h"
#include "iovec-util.h"
#include "json-util.h"
#include "log.h"
#include "mountpoint-util.h"
#include "parse-util.h"
#include "path-util.h"
+#include "pidref.h"
#include "process-util.h"
#include "stat-util.h"
+#include "stdio-util.h"
#include "string-util.h"
#include "strv.h"
#include "syslog-util.h"
#include "sd-json.h"
+#include "forward.h"
#include "log.h"
-#include "macro.h"
-#include "pidref.h"
+#include "string-util.h"
#define JSON_VARIANT_REPLACE(v, q) \
do { \
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <locale.h>
-#include <stdarg.h>
#include <stdlib.h>
-#include <sys/types.h>
#include "sd-json.h"
#include "sd-messages.h"
#include "errno-util.h"
#include "escape.h"
#include "ether-addr-util.h"
-#include "fd-util.h"
#include "fileio.h"
#include "float.h"
-#include "glyph-util.h"
#include "hexdecoct.h"
#include "in-addr-util.h"
-#include "iovec-util.h"
#include "json-internal.h"
#include "json-util.h"
#include "log.h"
-#include "macro.h"
#include "math-util.h"
#include "memory-util.h"
#include "memstream-util.h"
#include "ordered-set.h"
#include "parse-util.h"
-#include "path-util.h"
-#include "process-util.h"
+#include "pidref.h"
#include "ratelimit.h"
-#include "set.h"
#include "signal-util.h"
#include "string-table.h"
#include "string-util.h"
#include "strv.h"
#include "terminal-util.h"
+#include "time-util.h"
#include "user-util.h"
#include "utf8.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <poll.h>
#include <sys/inotify.h>
#include <unistd.h>
#include "fs-util.h"
#include "hostname-util.h"
#include "io-util.h"
-#include "log.h"
#include "login-util.h"
-#include "macro.h"
#include "parse-util.h"
#include "path-util.h"
#include "pidfd-util.h"
-#include "process-util.h"
+#include "pidref.h"
#include "socket-util.h"
-#include "stdio-util.h"
#include "string-util.h"
#include "strv.h"
#include "user-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <poll.h>
-#if HAVE_PIDFD_OPEN
-#include <sys/pidfd.h>
-#endif
+#include <sys/socket.h>
#include "sd-login.h"
#include "fd-util.h"
#include "format-util.h"
#include "log.h"
-#include "missing_syscall.h"
-#include "mountpoint-util.h"
+#include "pidfd-util.h"
#include "process-util.h"
#include "string-util.h"
#include "strv.h"
#include "sd-login.h"
#include "alloc-util.h"
+#include "errno-util.h"
#include "format-util.h"
+#include "log.h"
#include "main-func.h"
#include "parse-util.h"
+#include "string-util.h"
#include "strv.h"
-#include "tests.h"
static const char *arg_verb = NULL; /* NULL means all */
static pid_t arg_pid = 0; /* 0 == self */
#include "sd-netlink.h"
#include "alloc-util.h"
+#include "hashmap.h"
#include "log.h"
#include "netlink-genl.h"
#include "netlink-internal.h"
#include "netlink-types.h"
+#include "string-util.h"
typedef struct GenericNetlinkFamily {
sd_netlink *genl;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-netlink.h"
+#include "forward.h"
#define CTRL_GENL_NAME "nlctrl"
#pragma once
#include <linux/netlink.h>
+#include <sys/socket.h>
-#include "sd-netlink.h"
-
+#include "forward.h"
#include "list.h"
#include "netlink-types.h"
-#include "ordered-set.h"
-#include "prioq.h"
-#include "time-util.h"
#define NETLINK_DEFAULT_TIMEOUT_USEC ((usec_t) (25 * USEC_PER_SEC))
_NETLINK_SLOT_INVALID = -EINVAL,
} NetlinkSlotType;
-struct sd_netlink_slot {
+typedef struct sd_netlink_slot {
unsigned n_ref;
NetlinkSlotType type:8;
bool floating;
struct reply_callback reply_callback;
struct match_callback match_callback;
};
-};
+} sd_netlink_slot;
-struct sd_netlink {
+typedef struct sd_netlink {
unsigned n_ref;
int fd;
Hashmap *genl_family_by_name;
Hashmap *genl_family_by_id;
-};
+} sd_netlink;
struct netlink_attribute {
size_t offset; /* offset from hdr to attribute */
uint16_t max_attribute; /* the maximum attribute in container */
};
-struct sd_netlink_message {
+typedef struct sd_netlink_message {
unsigned n_ref;
int protocol;
bool sealed:1;
sd_netlink_message *next; /* next in a chain of multi-part messages */
-};
+} sd_netlink_message;
int message_new_empty(sd_netlink *nl, sd_netlink_message **ret);
int message_new_full(
int message_new(sd_netlink *nl, sd_netlink_message **ret, uint16_t type, uint16_t flags);
int message_new_synthetic_error(sd_netlink *nl, int error, uint32_t serial, sd_netlink_message **ret);
-static inline uint32_t message_get_serial(sd_netlink_message *m) {
- assert(m);
- return ASSERT_PTR(m->hdr)->nlmsg_seq;
-}
+uint32_t message_get_serial(sd_netlink_message *m);
void message_seal(sd_netlink_message *m);
#include <linux/netfilter.h>
#include <linux/netfilter/nf_tables.h>
#include <linux/netfilter/nfnetlink.h>
-#include <netinet/in.h>
#include "sd-netlink.h"
#include "alloc-util.h"
+#include "errno-util.h"
#include "iovec-util.h"
#include "log.h"
#include "netlink-internal.h"
-#include "netlink-types.h"
#include "netlink-util.h"
bool nfproto_is_valid(int nfproto) {
#include <linux/if_addrlabel.h>
#include <linux/if_bridge.h>
#include <linux/nexthop.h>
-#include <netinet/in.h>
-#include <stdbool.h>
-#include <unistd.h>
#include "sd-netlink.h"
-#include "format-util.h"
-#include "log.h"
+#include "in-addr-util.h"
#include "netlink-internal.h"
-#include "netlink-types.h"
-#include "netlink-util.h"
-#include "socket-util.h"
static bool rtnl_message_type_is_neigh(uint16_t type) {
return IN_SET(type, RTM_NEWNEIGH, RTM_GETNEIGH, RTM_DELNEIGH);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
-#include <stdbool.h>
-#include <unistd.h>
#include "sd-netlink.h"
#include "alloc-util.h"
-#include "format-util.h"
+#include "ether-addr-util.h"
#include "log.h"
#include "memory-util.h"
#include "netlink-internal.h"
#include "netlink-types.h"
#include "netlink-util.h"
#include "socket-util.h"
+#include "string-util.h"
#include "strv.h"
#define GET_CONTAINER(m, i) ((struct rtattr*)((uint8_t*)(m)->hdr + (m)->containers[i].offset))
return 0;
}
+uint32_t message_get_serial(sd_netlink_message *m) {
+ assert(m);
+ return ASSERT_PTR(m->hdr)->nlmsg_seq;
+}
+
int sd_netlink_message_set_request_dump(sd_netlink_message *m, int dump) {
assert_return(m, -EINVAL);
assert_return(m->hdr, -EINVAL);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-
#include "sd-netlink.h"
#include "alloc-util.h"
-#include "log.h"
+#include "hashmap.h"
#include "netlink-internal.h"
#include "netlink-slot.h"
+#include "prioq.h"
#include "string-util.h"
int netlink_slot_allocate(
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
-#include "sd-netlink.h"
-
+#include "forward.h"
#include "netlink-internal.h"
int netlink_slot_allocate(
#include "netlink-internal.h"
#include "netlink-sock-diag.h"
-#include "netlink-util.h"
int sd_sock_diag_socket_open(sd_netlink **ret) {
return netlink_open_family(ret, NETLINK_SOCK_DIAG);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <sys/types.h>
-
#include "sd-netlink.h"
/* TODO: to be exported later */
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <malloc.h>
-#include <netinet/in.h>
-#include <stdbool.h>
-#include <unistd.h>
-
#include "sd-netlink.h"
#include "alloc-util.h"
-#include "fd-util.h"
-#include "format-util.h"
+#include "errno-util.h"
+#include "hashmap.h"
#include "iovec-util.h"
#include "log.h"
#include "netlink-internal.h"
#include "netlink-types.h"
+#include "ordered-set.h"
#include "socket-util.h"
static int broadcast_groups_get(sd_netlink *nl) {
#include <linux/fou.h>
#include <linux/genetlink.h>
#include <linux/if.h>
+#include <linux/if_ether.h>
#include <linux/if_macsec.h>
#include <linux/l2tp.h>
#include <linux/nl80211.h>
#include <linux/wireguard.h>
#include <netinet/in.h>
-#include <sys/socket.h>
#include "missing_network.h"
#include "netlink-genl.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "macro.h"
#include "netlink-types.h"
/* C.f. see 'struct nla_policy' at include/net/netlink.h. */
#include <linux/if.h>
#include <linux/netfilter/nf_tables.h>
#include <linux/netfilter/nfnetlink.h>
+#include <linux/netlink.h>
#include "netlink-types-internal.h"
#include <linux/can/vxcan.h>
#include <linux/cfm_bridge.h>
#include <linux/fib_rules.h>
-#include <linux/fou.h>
#include <linux/if.h>
#include <linux/if_addr.h>
#include <linux/if_addrlabel.h>
#include <linux/if_bridge.h>
#include <linux/if_link.h>
-#include <linux/if_macsec.h>
#include <linux/if_tunnel.h>
-#include <linux/ip.h>
-#include <linux/l2tp.h>
#include <linux/net_namespace.h>
-#include <linux/netlink.h>
#include <linux/nexthop.h>
-#include <linux/nl80211.h>
#include <linux/pkt_sched.h>
#include <linux/rtnetlink.h>
#include <linux/veth.h>
-#include <linux/wireguard.h>
#include <netinet/in.h>
#include <sys/socket.h>
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <linux/netlink.h>
#include <linux/sock_diag.h>
#include <linux/unix_diag.h>
-#include "missing_network.h"
#include "netlink-types-internal.h"
#include "netlink-types.h"
#include <linux/netlink.h>
-#include "netlink-genl.h"
#include "netlink-internal.h"
#include "netlink-types-internal.h"
+#include "string-util.h"
static const NLAPolicy empty_policies[1] = {
/* fake array to avoid .types==NULL, which denotes invalid type-systems */
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <errno.h>
-
-#include "sd-netlink.h"
+#include "forward.h"
typedef enum NLAType {
NETLINK_TYPE_UNSPEC, /* NLA_UNSPEC */
#include "sd-netlink.h"
+#include "ether-addr-util.h"
#include "fd-util.h"
+#include "hashmap.h"
#include "iovec-util.h"
#include "log.h"
#include "memory-util.h"
#include "netlink-util.h"
#include "parse-util.h"
#include "process-util.h"
+#include "socket-util.h"
+#include "string-util.h"
#include "strv.h"
static int parse_newlink_message(
#include <linux/rtnetlink.h>
-#include "sd-netlink.h"
-
-#include "ether-addr-util.h"
+#include "forward.h"
#include "in-addr-util.h"
-#include "ordered-set.h"
-#include "socket-util.h"
#define RTA_FLAGS(rta) ((rta)->rta_type & ~NLA_TYPE_MASK)
#define RTA_TYPE(rta) ((rta)->rta_type & NLA_TYPE_MASK)
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <linux/filter.h>
#include <poll.h>
+#include <stdlib.h>
+#include "sd-event.h"
#include "sd-netlink.h"
#include "alloc-util.h"
+#include "errno-util.h"
#include "fd-util.h"
#include "hashmap.h"
#include "io-util.h"
#include "log.h"
-#include "macro.h"
#include "netlink-genl.h"
#include "netlink-internal.h"
#include "netlink-slot.h"
#include "netlink-util.h"
+#include "ordered-set.h"
+#include "prioq.h"
#include "process-util.h"
#include "socket-util.h"
#include "string-util.h"
+#include "time-util.h"
/* Some really high limit, to catch programming errors */
#define REPLY_CALLBACKS_MAX UINT16_MAX
int sd_netlink_open_fd(sd_netlink **ret, int fd) {
_cleanup_(sd_netlink_unrefp) sd_netlink *nl = NULL;
- int r, protocol;
+ int r, protocol = 0; /* Avoid maybe-uninitialized false positive */
assert_return(ret, -EINVAL);
assert_return(fd >= 0, -EBADF);
#include <linux/l2tp.h>
#include <linux/nl80211.h>
#include <linux/unix_diag.h>
+#include <net/ethernet.h>
#include <net/if.h>
-#include <netinet/ether.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <unistd.h>
+#include "sd-event.h"
#include "sd-netlink.h"
#include "alloc-util.h"
-#include "ether-addr-util.h"
#include "fd-util.h"
-#include "macro.h"
+#include "missing_network.h"
#include "netlink-genl.h"
#include "netlink-internal.h"
#include "netlink-sock-diag.h"
#include "netlink-util.h"
#include "socket-util.h"
#include "stdio-util.h"
-#include "string-util.h"
#include "strv.h"
#include "tests.h"
+#include "time-util.h"
TEST(message_newlink_bridge) {
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <errno.h>
-#include <netinet/in.h>
-#include <stdbool.h>
+#include <sys/socket.h>
#include "constants.h"
-#include "macro.h"
+#include "forward.h"
#define NETWORK_DIRS ((const char* const*) CONF_PATHS_STRV("systemd/network"))
#define NETWORK_DIRS_NULSTR CONF_PATHS_NULSTR("systemd/network")
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <poll.h>
#include <sys/inotify.h>
+#include <sys/stat.h>
+#include <unistd.h>
#include "sd-network.h"
#include "errno-util.h"
#include "extract-word.h"
#include "fd-util.h"
-#include "fs-util.h"
#include "inotify-util.h"
-#include "macro.h"
#include "parse-util.h"
#include "stdio-util.h"
#include "string-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <stdio.h>
#include <stdlib.h>
#include "alloc-util.h"
#include "fs-util.h"
#include "log.h"
-#include "macro.h"
-#include "nulstr-util.h"
#include "path-lookup.h"
#include "path-util.h"
#include "stat-util.h"
#include "string-util.h"
#include "strv.h"
#include "tmpfile-util.h"
-#include "user-util.h"
int user_search_dirs(const char *suffix, char ***ret_config_dirs, char ***ret_data_dirs) {
_cleanup_strv_free_ char **config_dirs = NULL, **data_dirs = NULL;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
#include "sd-path.h"
+#include "forward.h"
#include "runtime-scope.h"
typedef enum LookupPathsFlags {
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <stdlib.h>
+
#include "sd-path.h"
#include "alloc-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
-#include "log.h"
#include "network-util.h"
#include "nulstr-util.h"
#include "path-lookup.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
+#include <netdb.h>
#include <poll.h>
#include <pthread.h>
-#include <resolv.h>
#include <signal.h>
-#include <stdint.h>
#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
-#include <sys/prctl.h>
#include <threads.h>
#include <unistd.h>
+#include "sd-event.h"
#include "sd-resolve.h"
#include "alloc-util.h"
#include "list.h"
#include "log.h"
#include "memory-util.h"
-#include "missing_syscall.h"
#include "process-util.h"
#include "resolve-private.h"
#include "socket-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
-#include <errno.h>
-#include <net/if_arp.h>
+#include <netdb.h>
#include <netinet/in.h>
-#include <resolv.h>
#include <stdio.h>
+#include <stdlib.h>
#include "sd-resolve.h"
#include "alloc-util.h"
-#include "macro.h"
#include "socket-util.h"
#include "string-util.h"
#include "tests.h"
#include "alloc-util.h"
#include "ansi-color.h"
+#include "extract-word.h"
#include "json-util.h"
#include "log.h"
#include "memstream-util.h"
#include "set.h"
+#include "string-util.h"
#include "strv.h"
-#include "terminal-util.h"
#include "utf8.h"
#include "varlink-idl-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <malloc.h>
#include <poll.h>
+#include <stdlib.h>
+#include <unistd.h>
#include "sd-daemon.h"
+#include "sd-event.h"
#include "sd-varlink.h"
#include "alloc-util.h"
#include "errno-list.h"
#include "errno-util.h"
#include "escape.h"
+#include "extract-word.h"
#include "fd-util.h"
+#include "format-util.h"
#include "glyph-util.h"
#include "hashmap.h"
#include "io-util.h"
#include "mkdir.h"
#include "path-util.h"
#include "process-util.h"
-#include "set.h"
#include "socket-util.h"
#include "string-table.h"
#include "string-util.h"
#include "sd-varlink.h"
#include "sd-varlink-idl.h"
-#include "memory-util.h"
+#include "forward.h"
bool varlink_idl_field_name_is_valid(const char *name);
bool varlink_idl_symbol_name_is_valid(const char *name);
#include <sys/socket.h>
-#include "sd-event.h"
#include "sd-varlink.h"
-#include "hashmap.h"
#include "list.h"
+#include "forward.h"
typedef enum VarlinkState {
/* Client side states */
#include "alloc-util.h"
#include "errno-util.h"
#include "log.h"
+#include "pidref.h"
+#include "set.h"
#include "string-util.h"
-#include "varlink-internal.h"
#include "varlink-util.h"
#include "version.h"
#include "sd-varlink.h"
-#include "pidref.h"
-#include "set.h"
+#include "forward.h"
int varlink_get_peer_pidref(sd_varlink *v, PidRef *ret);
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
+#include <errno.h>
+#include <inttypes.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <sys/types.h>
+
/* This is a private header; never even think of including this directly! */
#if defined(__INCLUDE_LEVEL__) && __INCLUDE_LEVEL__ <= 1 && !defined(__COVERITY__) && !defined(__clang_analyzer__)
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <stddef.h>
-#include <stdint.h>
-
#include "_sd-common.h"
#include "sd-bus-protocol.h"
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
#include <sys/uio.h>
#include "_sd-common.h"
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
#include <sys/socket.h>
-#include <sys/types.h>
#include "_sd-common.h"
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <errno.h>
-#include <inttypes.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
-#include <sys/types.h>
#include "_sd-common.h"
#include "sd-event.h"
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-dhcp-duid.h"
_SD_BEGIN_DECLARATIONS;
typedef struct sd_dhcp_client_id sd_dhcp_client_id;
+typedef struct sd_dhcp_duid sd_dhcp_duid;
int sd_dhcp_client_id_new(sd_dhcp_client_id **ret);
sd_dhcp_client_id* sd_dhcp_client_id_free(sd_dhcp_client_id *client_id);
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
#include <stdbool.h>
-#include <sys/types.h>
#include "_sd-common.h"
-#include "sd-device.h"
-#include "sd-dhcp-client-id.h"
-#include "sd-dhcp-lease.h"
-#include "sd-dhcp-option.h"
-#include "sd-event.h"
_SD_BEGIN_DECLARATIONS;
+struct in_addr;
+
+typedef struct sd_device sd_device;
+typedef struct sd_dhcp_client_id sd_dhcp_client_id;
+typedef struct sd_dhcp_lease sd_dhcp_lease;
+typedef struct sd_dhcp_option sd_dhcp_option;
+typedef struct sd_event sd_event;
+
enum {
SD_DHCP_CLIENT_EVENT_STOP = 0,
SD_DHCP_CLIENT_EVENT_IP_ACQUIRE = 1,
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
_SD_BEGIN_DECLARATIONS;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <errno.h>
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-dhcp-client-id.h"
_SD_BEGIN_DECLARATIONS;
+struct in_addr;
+struct in6_addr;
+
+typedef struct sd_dhcp_client_id sd_dhcp_client_id;
typedef struct sd_dhcp_lease sd_dhcp_lease;
typedef struct sd_dhcp_route sd_dhcp_route;
typedef struct sd_dns_resolver sd_dns_resolver;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-dhcp-protocol.h"
+#include "sd-dhcp-protocol.h" /* IWYU pragma: export */
_SD_BEGIN_DECLARATIONS;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
#include <netinet/in.h>
#include "_sd-common.h"
#include "sd-dhcp-lease.h"
-#include "sd-dhcp-option.h"
-#include "sd-event.h"
_SD_BEGIN_DECLARATIONS;
+typedef struct sd_event sd_event;
+typedef struct sd_dhcp_option sd_dhcp_option;
typedef struct sd_dhcp_server sd_dhcp_server;
enum {
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-device.h"
-#include "sd-dhcp-duid.h"
-#include "sd-dhcp6-lease.h"
-#include "sd-dhcp6-option.h"
-#include "sd-event.h"
_SD_BEGIN_DECLARATIONS;
+struct in6_addr;
+
+typedef struct sd_dhcp_duid sd_dhcp_duid;
+typedef struct sd_dhcp6_option sd_dhcp6_option;
+typedef struct sd_dhcp6_lease sd_dhcp6_lease;
+typedef struct sd_device sd_device;
+typedef struct sd_event sd_event;
+
enum {
SD_DHCP6_CLIENT_EVENT_STOP = 0,
SD_DHCP6_CLIENT_EVENT_RESEND_EXPIRE = 10,
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <netinet/in.h>
-#include <sys/types.h>
#include "_sd-common.h"
-#include "sd-dhcp6-option.h"
_SD_BEGIN_DECLARATIONS;
+struct in6_addr;
+
typedef struct sd_dhcp6_lease sd_dhcp6_lease;
+typedef struct sd_dhcp6_option sd_dhcp6_option;
typedef struct sd_dns_resolver sd_dns_resolver;
int sd_dhcp6_lease_get_timestamp(sd_dhcp6_lease *lease, clockid_t clock, uint64_t *ret);
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-dhcp6-protocol.h"
+#include "sd-dhcp6-protocol.h" /* IWYU pragma: export */
_SD_BEGIN_DECLARATIONS;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
#include <signal.h>
#include <sys/epoll.h>
#include <sys/inotify.h>
#include <sys/signalfd.h>
-#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <stdarg.h>
#include <string.h>
#include "_sd-common.h"
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <net/ethernet.h>
-#include <netinet/in.h>
#include <stdbool.h>
#include "_sd-common.h"
-#include "sd-event.h"
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+struct in_addr;
+
+typedef struct sd_event sd_event;
+
enum {
SD_IPV4ACD_EVENT_STOP = 0,
SD_IPV4ACD_EVENT_BIND = 1,
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <net/ethernet.h>
-#include <netinet/in.h>
-
#include "_sd-common.h"
-#include "sd-event.h"
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+struct in_addr;
+
+typedef struct sd_event sd_event;
+
enum {
SD_IPV4LL_EVENT_STOP = 0,
SD_IPV4LL_EVENT_BIND = 1,
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <stdarg.h>
-#include <sys/types.h>
#include <sys/uio.h>
#include <syslog.h>
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <errno.h>
#include <fcntl.h>
-#include <inttypes.h>
-#include <stddef.h>
#include <stdio.h>
#include "_sd-common.h"
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <errno.h>
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-event.h"
-#include "sd-lldp.h"
+#include "sd-lldp.h" /* IWYU pragma: export*/
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+
+typedef struct sd_event sd_event;
typedef struct sd_lldp_rx sd_lldp_rx;
typedef struct sd_lldp_neighbor sd_lldp_neighbor;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <errno.h>
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-event.h"
-#include "sd-lldp.h"
+#include "sd-lldp.h" /* IWYU pragma: export*/
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+
+typedef struct sd_event sd_event;
typedef struct sd_lldp_tx sd_lldp_tx;
__extension__ typedef enum _SD_ENUM_TYPE_S64(sd_lldp_multicast_mode_t) {
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-
#include "_sd-common.h"
_SD_BEGIN_DECLARATIONS;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
/*
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
-#include <sys/types.h>
-#include <time.h>
-
#include "_sd-common.h"
_SD_BEGIN_DECLARATIONS;
+struct in6_addr;
+struct ether_addr;
+
typedef struct sd_ndisc_neighbor sd_ndisc_neighbor;
sd_ndisc_neighbor *sd_ndisc_neighbor_ref(sd_ndisc_neighbor *na);
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
-#include <netinet/ip6.h>
-#include <sys/types.h>
-#include <time.h>
-
#include "_sd-common.h"
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+struct in6_addr;
+struct ip6_hdr;
+
typedef struct sd_ndisc_redirect sd_ndisc_redirect;
sd_ndisc_redirect* sd_ndisc_redirect_ref(sd_ndisc_redirect *na);
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
+struct in6_addr;
+struct ether_addr;
+
_SD_BEGIN_DECLARATIONS;
typedef struct sd_ndisc_router_solicit sd_ndisc_router_solicit;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
-#include <sys/types.h>
-#include <time.h>
-
#include "_sd-common.h"
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+struct in6_addr;
+
typedef struct sd_ndisc_router sd_ndisc_router;
typedef struct sd_dns_resolver sd_dns_resolver;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <errno.h>
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-event.h"
-#include "sd-ndisc-neighbor.h"
-#include "sd-ndisc-protocol.h"
-#include "sd-ndisc-redirect.h"
-#include "sd-ndisc-router.h"
+#include "sd-ndisc-neighbor.h" /* IWYU pragma: export */
+#include "sd-ndisc-protocol.h" /* IWYU pragma: export */
+#include "sd-ndisc-redirect.h" /* IWYU pragma: export */
+#include "sd-ndisc-router.h" /* IWYU pragma: export */
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+struct in6_addr;
+
+typedef struct sd_event sd_event;
typedef struct sd_ndisc sd_ndisc;
__extension__ typedef enum _SD_ENUM_TYPE_S64(sd_ndisc_event_t) {
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <errno.h>
-#include <inttypes.h>
-#include <linux/filter.h>
-#include <linux/neighbour.h>
-#include <linux/rtnetlink.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
+#include <linux/rtnetlink.h> /* IWYU pragma: export */
#include "_sd-common.h"
-#include "sd-event.h"
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+struct in_addr;
+struct in6_addr;
+struct sockaddr_in;
+struct sockaddr_in6;
+struct sock_filter;
+struct ifa_cacheinfo;
+
+typedef struct sd_event sd_event;
+
typedef struct sd_netlink sd_netlink;
typedef struct sd_netlink_message sd_netlink_message;
typedef struct sd_netlink_slot sd_netlink_slot;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
/*
_SD_BEGIN_DECLARATIONS;
+struct stat;
+
/* Get overall operational state
* Possible states: down, up, dormant, carrier, degraded, routable
* Possible return codes:
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-
#include "_sd-common.h"
_SD_BEGIN_DECLARATIONS;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <inttypes.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
-#include "sd-event.h"
-#include "sd-ndisc-protocol.h"
-#include "sd-ndisc-router-solicit.h"
_SD_BEGIN_DECLARATIONS;
+struct ether_addr;
+struct in6_addr;
+
+typedef struct sd_event sd_event;
typedef struct sd_radv sd_radv;
int sd_radv_new(sd_radv **ret);
#define _GNU_SOURCE 1
#endif
-#include <inttypes.h>
-#include <netdb.h>
#include <sys/socket.h>
-#include <sys/types.h>
#include "_sd-common.h"
-#include "sd-event.h"
_SD_BEGIN_DECLARATIONS;
+struct addrinfo;
+
+typedef struct sd_event sd_event;
+
/* An opaque sd-resolve session structure */
typedef struct sd_resolve sd_resolve;
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <errno.h>
#include <stdio.h>
#include "_sd-common.h"
along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/
-#include <stdarg.h>
-#include <sys/types.h>
-
#include "_sd-common.h"
#include "sd-event.h"
#include "sd-json.h"