1 /* SPDX-License-Identifier: LGPL-2.1+ */
7 #include "conf-parser.h"
8 #include "ethtool-util.h"
12 typedef struct link_config_ctx link_config_ctx
;
13 typedef struct link_config link_config
;
15 typedef enum MACPolicy
{
20 _MACPOLICY_INVALID
= -1
23 typedef enum NamePolicy
{
32 _NAMEPOLICY_INVALID
= -1
43 Condition
*match_host
;
44 Condition
*match_virt
;
45 Condition
*match_kernel_cmdline
;
46 Condition
*match_kernel_version
;
47 Condition
*match_arch
;
50 struct ether_addr
*mac
;
52 NamePolicy
*name_policy
;
59 uint32_t advertise
[2];
62 int features
[_NET_DEV_FEAT_MAX
];
63 netdev_channels channels
;
65 LIST_FIELDS(link_config
, links
);
68 int link_config_ctx_new(link_config_ctx
**ret
);
69 void link_config_ctx_free(link_config_ctx
*ctx
);
70 DEFINE_TRIVIAL_CLEANUP_FUNC(link_config_ctx
*, link_config_ctx_free
);
72 int link_load_one(link_config_ctx
*ctx
, const char *filename
);
73 int link_config_load(link_config_ctx
*ctx
);
74 bool link_config_should_reload(link_config_ctx
*ctx
);
76 int link_config_get(link_config_ctx
*ctx
, sd_device
*device
, struct link_config
**ret
);
77 int link_config_apply(link_config_ctx
*ctx
, struct link_config
*config
, sd_device
*device
, const char **name
);
78 int link_get_driver(link_config_ctx
*ctx
, sd_device
*device
, char **ret
);
80 const char *name_policy_to_string(NamePolicy p
) _const_
;
81 NamePolicy
name_policy_from_string(const char *p
) _pure_
;
83 const char *mac_policy_to_string(MACPolicy p
) _const_
;
84 MACPolicy
mac_policy_from_string(const char *p
) _pure_
;
86 /* gperf lookup function */
87 const struct ConfigPerfItem
* link_config_gperf_lookup(const char *key
, GPERF_LEN_TYPE length
);
89 CONFIG_PARSER_PROTOTYPE(config_parse_mac_policy
);
90 CONFIG_PARSER_PROTOTYPE(config_parse_name_policy
);