/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2014 Red Hat, Inc.
 */

#ifndef __NM_CONNECTION_PRIVATE_H__
#define __NM_CONNECTION_PRIVATE_H__

#if !((NETWORKMANAGER_COMPILATION) & NM_NETWORKMANAGER_COMPILATION_WITH_LIBNM_CORE_PRIVATE)
#error Cannot use this header.
#endif

#include "nm-setting.h"
#include "nm-connection.h"

NMSetting *_nm_connection_find_base_type_setting(NMConnection *connection);

const char *_nm_connection_detect_slave_type(NMConnection *connection, NMSetting **out_s_port);

gboolean _nm_connection_detect_slave_type_full(NMSettingConnection *s_con,
                                               NMConnection        *connection,
                                               const char         **out_slave_type,
                                               const char         **out_normerr_slave_setting_type,
                                               const char         **out_normerr_missing_slave_type,
                                               const char **out_normerr_missing_slave_type_port,
                                               GError     **error);

const char *_nm_connection_detect_bluetooth_type(NMConnection *self);

gboolean _nm_setting_connection_verify_secondaries(GArray *secondaries, GError **error);

gboolean _nm_connection_verify_required_interface_name(NMConnection *connection, GError **error);

int _nm_setting_ovs_interface_verify_interface_type(NMSettingOvsInterface *self,
                                                    const char            *type,
                                                    NMConnection          *connection,
                                                    gboolean               normalize,
                                                    gboolean              *out_modified,
                                                    const char           **out_normalized_type,
                                                    GError               **error);

#endif /* __NM_CONNECTION_PRIVATE_H__ */
