mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-30 12:00:11 +01:00
NetworkManager primarily manages interfaces in an independent fashion. That means, whenever possible, we want to have a interface specific view. In many cases, the underlying kernel API also supports that view. For example, when configuring IP addresses or unicast routes, we do so per interfaces and don't need a holistic view. However, that is not always sufficient. For routing rules and certain route types (blackhole, unreachable, etc), we need a system wide view of all the objects in the network namespace. Originally, NMPRulesManager was added to track routing rules. Then, it was extended to also track certain route types, and the API was renamed to NMPRouteManager. This will also be used to track MPTCP addresses. So rename again, to give it a general name that is suitable for what it does. Still, the name is not great (suggestion welcome), but it should cover the purpose of the API well enough. And it's the best I came up with. Rename.
54 lines
1.6 KiB
C
54 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2017 Red Hat, Inc.
|
|
*/
|
|
|
|
#ifndef __NM_NETNS_H__
|
|
#define __NM_NETNS_H__
|
|
|
|
#include "libnm-platform/nmp-base.h"
|
|
|
|
#define NM_TYPE_NETNS (nm_netns_get_type())
|
|
#define NM_NETNS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_NETNS, NMNetns))
|
|
#define NM_NETNS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_NETNS, NMNetnsClass))
|
|
#define NM_IS_NETNS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_NETNS))
|
|
#define NM_IS_NETNS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_NETNS))
|
|
#define NM_NETNS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_NETNS, NMNetnsClass))
|
|
|
|
#define NM_NETNS_PLATFORM "platform"
|
|
|
|
typedef struct _NMNetnsClass NMNetnsClass;
|
|
|
|
struct _NMPlatform;
|
|
|
|
GType nm_netns_get_type(void);
|
|
|
|
NMNetns *nm_netns_get(void);
|
|
NMNetns *nm_netns_new(struct _NMPlatform *platform);
|
|
|
|
struct _NMPlatform *nm_netns_get_platform(NMNetns *self);
|
|
NMPNetns *nm_netns_get_platform_netns(NMNetns *self);
|
|
|
|
struct _NMPGlobalTracker *nm_netns_get_global_tracker(NMNetns *self);
|
|
|
|
struct _NMDedupMultiIndex *nm_netns_get_multi_idx(NMNetns *self);
|
|
|
|
#define NM_NETNS_GET (nm_netns_get())
|
|
|
|
NML3Cfg *nm_netns_l3cfg_get(NMNetns *self, int ifindex);
|
|
|
|
NML3Cfg *nm_netns_l3cfg_acquire(NMNetns *netns, int ifindex);
|
|
|
|
/*****************************************************************************/
|
|
|
|
typedef struct {
|
|
in_addr_t addr;
|
|
int _ref_count;
|
|
NMNetns *_self;
|
|
} NMNetnsSharedIPHandle;
|
|
|
|
NMNetnsSharedIPHandle *nm_netns_shared_ip_reserve(NMNetns *self);
|
|
|
|
void nm_netns_shared_ip_release(NMNetnsSharedIPHandle *handle);
|
|
|
|
#endif /* __NM_NETNS_H__ */
|