NetworkManager/src/core/nm-netns.h
Thomas Haller bf248e0400
platform: rename NMPRouteManager to NMPGlobalTracker
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.
2022-07-26 12:43:44 +02:00

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__ */