NetworkManager/clients/tui/nmt-page-ethernet.c
Thomas Haller 0fca809bfd
all: explicit include <linux/if_{ether,infiniband,vlan}.h> as needed
Currently libnm headers include <linux/if_{ether,infiniband,vlan}.h>.
These are public headers, that means we drag in the linux header to all
users of <NetworkManager.h>.

Often the linux headers work badly together with certain headers from libc.
Depending on the libc version, you have to order linux headers in the right
order with respect to libc headers.

We should do better about libnm headers. As a first step, assume that
the linux headers don't get included by libnm, and explicitly include
them where they are needed.
2020-12-22 16:33:33 +01:00

88 lines
2.7 KiB
C

/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright (C) 2013 Red Hat, Inc.
*/
/**
* SECTION:nmt-page-ethernet
* @short_description: The editor page for Ethernet connections
*/
#include "nm-default.h"
#include "nmt-page-ethernet.h"
#include <linux/if_ether.h>
#include <linux/if_infiniband.h>
#include "nmt-mac-entry.h"
#include "nmt-mtu-entry.h"
G_DEFINE_TYPE(NmtPageEthernet, nmt_page_ethernet, NMT_TYPE_EDITOR_PAGE_DEVICE)
NmtEditorPage *
nmt_page_ethernet_new(NMConnection *conn, NmtDeviceEntry *deventry)
{
return g_object_new(NMT_TYPE_PAGE_ETHERNET, "connection", conn, "device-entry", deventry, NULL);
}
static void
nmt_page_ethernet_init(NmtPageEthernet *ethernet)
{}
static void
nmt_page_ethernet_constructed(GObject *object)
{
NmtPageEthernet * ethernet = NMT_PAGE_ETHERNET(object);
NmtDeviceEntry * deventry;
NmtEditorSection *section;
NmtEditorGrid * grid;
NMSettingWired * s_wired;
NmtNewtWidget * widget;
NMConnection * conn;
conn = nmt_editor_page_get_connection(NMT_EDITOR_PAGE(ethernet));
s_wired = nm_connection_get_setting_wired(conn);
if (!s_wired) {
nm_connection_add_setting(conn, nm_setting_wired_new());
s_wired = nm_connection_get_setting_wired(conn);
}
deventry = nmt_editor_page_device_get_device_entry(NMT_EDITOR_PAGE_DEVICE(object));
g_object_bind_property(s_wired,
NM_SETTING_WIRED_MAC_ADDRESS,
deventry,
"mac-address",
G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
section = nmt_editor_section_new(_("ETHERNET"), NULL, FALSE);
grid = nmt_editor_section_get_body(section);
widget = nmt_mac_entry_new(40, ETH_ALEN, NMT_MAC_ENTRY_TYPE_CLONED);
g_object_bind_property(s_wired,
NM_SETTING_WIRED_CLONED_MAC_ADDRESS,
widget,
"mac-address",
G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
nmt_editor_grid_append(grid, _("Cloned MAC address"), widget, NULL);
widget = nmt_mtu_entry_new();
g_object_bind_property(s_wired,
NM_SETTING_WIRED_MTU,
widget,
"mtu",
G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
nmt_editor_grid_append(grid, _("MTU"), widget, NULL);
nmt_editor_page_add_section(NMT_EDITOR_PAGE(ethernet), section);
G_OBJECT_CLASS(nmt_page_ethernet_parent_class)->constructed(object);
}
static void
nmt_page_ethernet_class_init(NmtPageEthernetClass *ethernet_class)
{
GObjectClass *object_class = G_OBJECT_CLASS(ethernet_class);
object_class->constructed = nmt_page_ethernet_constructed;
}