/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2010 - 2014 Red Hat, Inc.
 */

#ifndef NMC_SETTINGS_H
#define NMC_SETTINGS_H

#include "libnmc-setting/nm-meta-setting-desc.h"

#include "nmcli.h"

/*****************************************************************************/

void nmc_setting_ip4_connect_handlers(NMSettingIPConfig *setting);
void nmc_setting_ip6_connect_handlers(NMSettingIPConfig *setting);
void nmc_setting_proxy_connect_handlers(NMSettingProxy *setting);
void nmc_setting_wireless_connect_handlers(NMSettingWireless *setting);
void nmc_setting_connection_connect_handlers(NMSettingConnection *setting,
                                             NMConnection        *connection);

char **nmc_setting_get_valid_properties(NMSetting *setting);
char  *nmc_setting_get_property_desc(NMSetting *setting, const char *prop);
const char *const *
nmc_setting_get_property_allowed_values(NMSetting *setting, const char *prop, char ***out_to_free);
char    *nmc_setting_get_property(NMSetting *setting, const char *prop, GError **error);
char    *nmc_setting_get_property_parsable(NMSetting *setting, const char *prop, GError **error);
gboolean nmc_setting_set_property(NMClient              *client,
                                  NMSetting             *setting,
                                  const char            *prop,
                                  NMMetaAccessorModifier modifier,
                                  const char            *val,
                                  GError               **error);

gboolean setting_details(const NmcConfig *nmc_config, NMSetting *setting, const char *one_prop);

const char *nmc_setting_propname_user_to_libnm(const char *setting_name, const char *prop);
const char *nmc_setting_propname_libnm_to_user(const char *setting_name, const char *prop);

#endif /* NMC_SETTINGS_H */
