mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-06 13:48:36 +02:00
platform/tests/trivial: move code around
This commit is contained in:
parent
35e7703bdc
commit
56753ee41f
2 changed files with 214 additions and 177 deletions
|
|
@ -32,6 +32,8 @@
|
||||||
#define SIGNAL_DATA_FMT "'%s-%s' ifindex %d%s%s%s (%d times received)"
|
#define SIGNAL_DATA_FMT "'%s-%s' ifindex %d%s%s%s (%d times received)"
|
||||||
#define SIGNAL_DATA_ARG(data) (data)->name, nm_platform_signal_change_type_to_string ((data)->change_type), (data)->ifindex, (data)->ifname ? " ifname '" : "", (data)->ifname ? (data)->ifname : "", (data)->ifname ? "'" : "", (data)->received_count
|
#define SIGNAL_DATA_ARG(data) (data)->name, nm_platform_signal_change_type_to_string ((data)->change_type), (data)->ifindex, (data)->ifname ? " ifname '" : "", (data)->ifname ? (data)->ifname : "", (data)->ifname ? "'" : "", (data)->received_count
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
nmtstp_is_root_test (void)
|
nmtstp_is_root_test (void)
|
||||||
{
|
{
|
||||||
|
|
@ -47,6 +49,8 @@ nmtstp_is_sysfs_writable (void)
|
||||||
|| (access ("/sys/devices", W_OK) == 0);
|
|| (access ("/sys/devices", W_OK) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
SignalData *
|
SignalData *
|
||||||
add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCallback callback, int ifindex, const char *ifname)
|
add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCallback callback, int ifindex, const char *ifname)
|
||||||
{
|
{
|
||||||
|
|
@ -180,6 +184,8 @@ link_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, NMPlat
|
||||||
g_error ("Added/changed link not found in the local cache.");
|
g_error ("Added/changed link not found in the local cache.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric)
|
ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric)
|
||||||
{
|
{
|
||||||
|
|
@ -287,6 +293,8 @@ _assert_ip4_route_exists (const char *file, guint line, const char *func, gboole
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
nmtstp_run_command (const char *format, ...)
|
nmtstp_run_command (const char *format, ...)
|
||||||
{
|
{
|
||||||
|
|
@ -432,6 +440,8 @@ nmtstp_assert_wait_for_link_until (NMPlatform *platform, const char *ifname, NML
|
||||||
return plink;
|
return plink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
nmtstp_run_command_check_external_global (void)
|
nmtstp_run_command_check_external_global (void)
|
||||||
{
|
{
|
||||||
|
|
@ -460,6 +470,8 @@ nmtstp_run_command_check_external (int external_command)
|
||||||
return (nmtst_get_rand_int () % 2) == 0;
|
return (nmtst_get_rand_int () % 2) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define CHECK_LIFETIME_MAX_DIFF 2
|
#define CHECK_LIFETIME_MAX_DIFF 2
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
|
@ -556,6 +568,8 @@ nmtstp_ip_address_assert_lifetime (const NMPlatformIPAddress *addr,
|
||||||
g_assert (nmtstp_ip_address_check_lifetime (addr, n, expected_lifetime, expected_preferred));
|
g_assert (nmtstp_ip_address_check_lifetime (addr, n, expected_lifetime, expected_preferred));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ip_address_add (gboolean external_command,
|
_ip_address_add (gboolean external_command,
|
||||||
gboolean is_v4,
|
gboolean is_v4,
|
||||||
|
|
@ -692,6 +706,173 @@ _ip_address_add (gboolean external_command,
|
||||||
} while (TRUE);
|
} while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nmtstp_ip4_address_add (gboolean external_command,
|
||||||
|
int ifindex,
|
||||||
|
in_addr_t address,
|
||||||
|
int plen,
|
||||||
|
in_addr_t peer_address,
|
||||||
|
guint32 lifetime,
|
||||||
|
guint32 preferred,
|
||||||
|
guint32 flags,
|
||||||
|
const char *label)
|
||||||
|
{
|
||||||
|
_ip_address_add (external_command,
|
||||||
|
TRUE,
|
||||||
|
ifindex,
|
||||||
|
(NMIPAddr *) &address,
|
||||||
|
plen,
|
||||||
|
(NMIPAddr *) &peer_address,
|
||||||
|
lifetime,
|
||||||
|
preferred,
|
||||||
|
flags,
|
||||||
|
label);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nmtstp_ip6_address_add (gboolean external_command,
|
||||||
|
int ifindex,
|
||||||
|
struct in6_addr address,
|
||||||
|
int plen,
|
||||||
|
struct in6_addr peer_address,
|
||||||
|
guint32 lifetime,
|
||||||
|
guint32 preferred,
|
||||||
|
guint32 flags)
|
||||||
|
{
|
||||||
|
_ip_address_add (external_command,
|
||||||
|
FALSE,
|
||||||
|
ifindex,
|
||||||
|
(NMIPAddr *) &address,
|
||||||
|
plen,
|
||||||
|
(NMIPAddr *) &peer_address,
|
||||||
|
lifetime,
|
||||||
|
preferred,
|
||||||
|
flags,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ip_address_del (gboolean external_command,
|
||||||
|
gboolean is_v4,
|
||||||
|
int ifindex,
|
||||||
|
const NMIPAddr *address,
|
||||||
|
int plen,
|
||||||
|
const NMIPAddr *peer_address)
|
||||||
|
{
|
||||||
|
gint64 end_time;
|
||||||
|
|
||||||
|
external_command = nmtstp_run_command_check_external (external_command);
|
||||||
|
|
||||||
|
if (external_command) {
|
||||||
|
const char *ifname;
|
||||||
|
char b1[NM_UTILS_INET_ADDRSTRLEN], b2[NM_UTILS_INET_ADDRSTRLEN];
|
||||||
|
int success;
|
||||||
|
gboolean had_address;
|
||||||
|
|
||||||
|
ifname = nm_platform_link_get_name (NM_PLATFORM_GET, ifindex);
|
||||||
|
g_assert (ifname);
|
||||||
|
|
||||||
|
/* let's wait until we see the address as we added it. */
|
||||||
|
if (is_v4)
|
||||||
|
had_address = !!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4);
|
||||||
|
else
|
||||||
|
had_address = !!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen);
|
||||||
|
|
||||||
|
if (is_v4) {
|
||||||
|
success = nmtstp_run_command ("ip address delete %s%s%s/%d dev %s",
|
||||||
|
nm_utils_inet4_ntop (address->addr4, b1),
|
||||||
|
peer_address->addr4 != address->addr4 ? " peer " : "",
|
||||||
|
peer_address->addr4 != address->addr4 ? nm_utils_inet4_ntop (peer_address->addr4, b2) : "",
|
||||||
|
plen,
|
||||||
|
ifname);
|
||||||
|
} else {
|
||||||
|
g_assert (!peer_address);
|
||||||
|
success = nmtstp_run_command ("ip address delete %s/%d dev %s",
|
||||||
|
nm_utils_inet6_ntop (&address->addr6, b1),
|
||||||
|
plen,
|
||||||
|
ifname);
|
||||||
|
}
|
||||||
|
g_assert (success == 0 || !had_address);
|
||||||
|
} else {
|
||||||
|
gboolean success;
|
||||||
|
|
||||||
|
if (is_v4) {
|
||||||
|
success = nm_platform_ip4_address_delete (NM_PLATFORM_GET,
|
||||||
|
ifindex,
|
||||||
|
address->addr4,
|
||||||
|
plen,
|
||||||
|
peer_address->addr4);
|
||||||
|
} else {
|
||||||
|
g_assert (!peer_address);
|
||||||
|
success = nm_platform_ip6_address_delete (NM_PLATFORM_GET,
|
||||||
|
ifindex,
|
||||||
|
address->addr6,
|
||||||
|
plen);
|
||||||
|
}
|
||||||
|
g_assert (success);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Let's wait until we get the result */
|
||||||
|
end_time = nm_utils_get_monotonic_timestamp_ms () + 250;
|
||||||
|
do {
|
||||||
|
if (external_command)
|
||||||
|
nm_platform_process_events (NM_PLATFORM_GET);
|
||||||
|
|
||||||
|
/* let's wait until we see the address as we added it. */
|
||||||
|
if (is_v4) {
|
||||||
|
const NMPlatformIP4Address *a;
|
||||||
|
|
||||||
|
a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4);
|
||||||
|
if (!a)
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
const NMPlatformIP6Address *a;
|
||||||
|
|
||||||
|
a = nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen);
|
||||||
|
if (!a)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* for internal command, we expect not to reach this line.*/
|
||||||
|
g_assert (external_command);
|
||||||
|
|
||||||
|
g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time));
|
||||||
|
} while (TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nmtstp_ip4_address_del (gboolean external_command,
|
||||||
|
int ifindex,
|
||||||
|
in_addr_t address,
|
||||||
|
int plen,
|
||||||
|
in_addr_t peer_address)
|
||||||
|
{
|
||||||
|
_ip_address_del (external_command,
|
||||||
|
TRUE,
|
||||||
|
ifindex,
|
||||||
|
(NMIPAddr *) &address,
|
||||||
|
plen,
|
||||||
|
(NMIPAddr *) &peer_address);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nmtstp_ip6_address_del (gboolean external_command,
|
||||||
|
int ifindex,
|
||||||
|
struct in6_addr address,
|
||||||
|
int plen)
|
||||||
|
{
|
||||||
|
_ip_address_del (external_command,
|
||||||
|
FALSE,
|
||||||
|
ifindex,
|
||||||
|
(NMIPAddr *) &address,
|
||||||
|
plen,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define _assert_pllink(platform, success, pllink, name, type) \
|
#define _assert_pllink(platform, success, pllink, name, type) \
|
||||||
G_STMT_START { \
|
G_STMT_START { \
|
||||||
const NMPlatformLink *_pllink = (pllink); \
|
const NMPlatformLink *_pllink = (pllink); \
|
||||||
|
|
@ -1000,168 +1181,7 @@ nmtstp_link_vxlan_add (gboolean external_command,
|
||||||
return pllink;
|
return pllink;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
/*****************************************************************************/
|
||||||
nmtstp_ip4_address_add (gboolean external_command,
|
|
||||||
int ifindex,
|
|
||||||
in_addr_t address,
|
|
||||||
int plen,
|
|
||||||
in_addr_t peer_address,
|
|
||||||
guint32 lifetime,
|
|
||||||
guint32 preferred,
|
|
||||||
guint32 flags,
|
|
||||||
const char *label)
|
|
||||||
{
|
|
||||||
_ip_address_add (external_command,
|
|
||||||
TRUE,
|
|
||||||
ifindex,
|
|
||||||
(NMIPAddr *) &address,
|
|
||||||
plen,
|
|
||||||
(NMIPAddr *) &peer_address,
|
|
||||||
lifetime,
|
|
||||||
preferred,
|
|
||||||
flags,
|
|
||||||
label);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
nmtstp_ip6_address_add (gboolean external_command,
|
|
||||||
int ifindex,
|
|
||||||
struct in6_addr address,
|
|
||||||
int plen,
|
|
||||||
struct in6_addr peer_address,
|
|
||||||
guint32 lifetime,
|
|
||||||
guint32 preferred,
|
|
||||||
guint32 flags)
|
|
||||||
{
|
|
||||||
_ip_address_add (external_command,
|
|
||||||
FALSE,
|
|
||||||
ifindex,
|
|
||||||
(NMIPAddr *) &address,
|
|
||||||
plen,
|
|
||||||
(NMIPAddr *) &peer_address,
|
|
||||||
lifetime,
|
|
||||||
preferred,
|
|
||||||
flags,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ip_address_del (gboolean external_command,
|
|
||||||
gboolean is_v4,
|
|
||||||
int ifindex,
|
|
||||||
const NMIPAddr *address,
|
|
||||||
int plen,
|
|
||||||
const NMIPAddr *peer_address)
|
|
||||||
{
|
|
||||||
gint64 end_time;
|
|
||||||
|
|
||||||
external_command = nmtstp_run_command_check_external (external_command);
|
|
||||||
|
|
||||||
if (external_command) {
|
|
||||||
const char *ifname;
|
|
||||||
char b1[NM_UTILS_INET_ADDRSTRLEN], b2[NM_UTILS_INET_ADDRSTRLEN];
|
|
||||||
int success;
|
|
||||||
gboolean had_address;
|
|
||||||
|
|
||||||
ifname = nm_platform_link_get_name (NM_PLATFORM_GET, ifindex);
|
|
||||||
g_assert (ifname);
|
|
||||||
|
|
||||||
/* let's wait until we see the address as we added it. */
|
|
||||||
if (is_v4)
|
|
||||||
had_address = !!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4);
|
|
||||||
else
|
|
||||||
had_address = !!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen);
|
|
||||||
|
|
||||||
if (is_v4) {
|
|
||||||
success = nmtstp_run_command ("ip address delete %s%s%s/%d dev %s",
|
|
||||||
nm_utils_inet4_ntop (address->addr4, b1),
|
|
||||||
peer_address->addr4 != address->addr4 ? " peer " : "",
|
|
||||||
peer_address->addr4 != address->addr4 ? nm_utils_inet4_ntop (peer_address->addr4, b2) : "",
|
|
||||||
plen,
|
|
||||||
ifname);
|
|
||||||
} else {
|
|
||||||
g_assert (!peer_address);
|
|
||||||
success = nmtstp_run_command ("ip address delete %s/%d dev %s",
|
|
||||||
nm_utils_inet6_ntop (&address->addr6, b1),
|
|
||||||
plen,
|
|
||||||
ifname);
|
|
||||||
}
|
|
||||||
g_assert (success == 0 || !had_address);
|
|
||||||
} else {
|
|
||||||
gboolean success;
|
|
||||||
|
|
||||||
if (is_v4) {
|
|
||||||
success = nm_platform_ip4_address_delete (NM_PLATFORM_GET,
|
|
||||||
ifindex,
|
|
||||||
address->addr4,
|
|
||||||
plen,
|
|
||||||
peer_address->addr4);
|
|
||||||
} else {
|
|
||||||
g_assert (!peer_address);
|
|
||||||
success = nm_platform_ip6_address_delete (NM_PLATFORM_GET,
|
|
||||||
ifindex,
|
|
||||||
address->addr6,
|
|
||||||
plen);
|
|
||||||
}
|
|
||||||
g_assert (success);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Let's wait until we get the result */
|
|
||||||
end_time = nm_utils_get_monotonic_timestamp_ms () + 250;
|
|
||||||
do {
|
|
||||||
if (external_command)
|
|
||||||
nm_platform_process_events (NM_PLATFORM_GET);
|
|
||||||
|
|
||||||
/* let's wait until we see the address as we added it. */
|
|
||||||
if (is_v4) {
|
|
||||||
const NMPlatformIP4Address *a;
|
|
||||||
|
|
||||||
a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4);
|
|
||||||
if (!a)
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
const NMPlatformIP6Address *a;
|
|
||||||
|
|
||||||
a = nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen);
|
|
||||||
if (!a)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* for internal command, we expect not to reach this line.*/
|
|
||||||
g_assert (external_command);
|
|
||||||
|
|
||||||
g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time));
|
|
||||||
} while (TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
nmtstp_ip4_address_del (gboolean external_command,
|
|
||||||
int ifindex,
|
|
||||||
in_addr_t address,
|
|
||||||
int plen,
|
|
||||||
in_addr_t peer_address)
|
|
||||||
{
|
|
||||||
_ip_address_del (external_command,
|
|
||||||
TRUE,
|
|
||||||
ifindex,
|
|
||||||
(NMIPAddr *) &address,
|
|
||||||
plen,
|
|
||||||
(NMIPAddr *) &peer_address);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
nmtstp_ip6_address_del (gboolean external_command,
|
|
||||||
int ifindex,
|
|
||||||
struct in6_addr address,
|
|
||||||
int plen)
|
|
||||||
{
|
|
||||||
_ip_address_del (external_command,
|
|
||||||
FALSE,
|
|
||||||
ifindex,
|
|
||||||
(NMIPAddr *) &address,
|
|
||||||
plen,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
const NMPlatformLink *
|
const NMPlatformLink *
|
||||||
nmtstp_link_get_typed (NMPlatform *platform,
|
nmtstp_link_get_typed (NMPlatform *platform,
|
||||||
|
|
@ -1210,6 +1230,8 @@ nmtstp_link_get (NMPlatform *platform,
|
||||||
return nmtstp_link_get_typed (platform, ifindex, name, NM_LINK_TYPE_NONE);
|
return nmtstp_link_get_typed (platform, ifindex, name, NM_LINK_TYPE_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
nmtstp_link_del (gboolean external_command,
|
nmtstp_link_del (gboolean external_command,
|
||||||
int ifindex,
|
int ifindex,
|
||||||
|
|
@ -1254,6 +1276,8 @@ nmtstp_link_del (gboolean external_command,
|
||||||
} while (TRUE);
|
} while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
nmtstp_link_set_updown (gboolean external_command,
|
nmtstp_link_set_updown (gboolean external_command,
|
||||||
int ifindex,
|
int ifindex,
|
||||||
|
|
|
||||||
|
|
@ -38,16 +38,6 @@
|
||||||
|
|
||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
gulong handler_id;
|
|
||||||
const char *name;
|
|
||||||
NMPlatformSignalChangeType change_type;
|
|
||||||
gint received_count;
|
|
||||||
GMainLoop *loop;
|
|
||||||
int ifindex;
|
|
||||||
const char *ifname;
|
|
||||||
} SignalData;
|
|
||||||
|
|
||||||
gboolean nmtstp_is_root_test (void);
|
gboolean nmtstp_is_root_test (void);
|
||||||
gboolean nmtstp_is_sysfs_writable (void);
|
gboolean nmtstp_is_sysfs_writable (void);
|
||||||
|
|
||||||
|
|
@ -64,6 +54,16 @@ int nmtstp_namespace_get_fd_for_process (pid_t pid, const char *ns_name);
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
gulong handler_id;
|
||||||
|
const char *name;
|
||||||
|
NMPlatformSignalChangeType change_type;
|
||||||
|
gint received_count;
|
||||||
|
GMainLoop *loop;
|
||||||
|
int ifindex;
|
||||||
|
const char *ifname;
|
||||||
|
} SignalData;
|
||||||
|
|
||||||
SignalData *add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCallback callback, int ifindex, const char *ifname);
|
SignalData *add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCallback callback, int ifindex, const char *ifname);
|
||||||
#define add_signal(name, change_type, callback) add_signal_full (name, change_type, (GCallback) callback, 0, NULL)
|
#define add_signal(name, change_type, callback) add_signal_full (name, change_type, (GCallback) callback, 0, NULL)
|
||||||
#define add_signal_ifindex(name, change_type, callback, ifindex) add_signal_full (name, change_type, (GCallback) callback, ifindex, NULL)
|
#define add_signal_ifindex(name, change_type, callback, ifindex) add_signal_full (name, change_type, (GCallback) callback, ifindex, NULL)
|
||||||
|
|
@ -81,16 +81,15 @@ void _free_signal (const char *file, int line, const char *func, SignalData *dat
|
||||||
#define ensure_no_signal(data) _ensure_no_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
#define ensure_no_signal(data) _ensure_no_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
||||||
#define free_signal(data) _free_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
#define free_signal(data) _free_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
||||||
|
|
||||||
gboolean ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric);
|
|
||||||
|
|
||||||
void _assert_ip4_route_exists (const char *file, guint line, const char *func, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric);
|
|
||||||
#define assert_ip4_route_exists(exists, ifname, network, plen, metric) _assert_ip4_route_exists (__FILE__, __LINE__, G_STRFUNC, exists, ifname, network, plen, metric)
|
|
||||||
|
|
||||||
void link_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, NMPlatformLink *received, NMPlatformSignalChangeType change_type, SignalData *data);
|
void link_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, NMPlatformLink *received, NMPlatformSignalChangeType change_type, SignalData *data);
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
int nmtstp_run_command (const char *format, ...) __attribute__((__format__ (__printf__, 1, 2)));
|
int nmtstp_run_command (const char *format, ...) __attribute__((__format__ (__printf__, 1, 2)));
|
||||||
#define nmtstp_run_command_check(...) do { g_assert_cmpint (nmtstp_run_command (__VA_ARGS__), ==, 0); } while (0)
|
#define nmtstp_run_command_check(...) do { g_assert_cmpint (nmtstp_run_command (__VA_ARGS__), ==, 0); } while (0)
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
gboolean nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms);
|
gboolean nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms);
|
||||||
gboolean nmtstp_wait_for_signal_until (NMPlatform *platform, gint64 until_ms);
|
gboolean nmtstp_wait_for_signal_until (NMPlatform *platform, gint64 until_ms);
|
||||||
const NMPlatformLink *nmtstp_wait_for_link (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, guint timeout_ms);
|
const NMPlatformLink *nmtstp_wait_for_link (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, guint timeout_ms);
|
||||||
|
|
@ -99,9 +98,20 @@ const NMPlatformLink *nmtstp_wait_for_link_until (NMPlatform *platform, const ch
|
||||||
const NMPlatformLink *nmtstp_assert_wait_for_link (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, guint timeout_ms);
|
const NMPlatformLink *nmtstp_assert_wait_for_link (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, guint timeout_ms);
|
||||||
const NMPlatformLink *nmtstp_assert_wait_for_link_until (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, gint64 until_ms);
|
const NMPlatformLink *nmtstp_assert_wait_for_link_until (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, gint64 until_ms);
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
int nmtstp_run_command_check_external_global (void);
|
int nmtstp_run_command_check_external_global (void);
|
||||||
gboolean nmtstp_run_command_check_external (int external_command);
|
gboolean nmtstp_run_command_check_external (int external_command);
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
gboolean ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric);
|
||||||
|
|
||||||
|
void _assert_ip4_route_exists (const char *file, guint line, const char *func, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric);
|
||||||
|
#define assert_ip4_route_exists(exists, ifname, network, plen, metric) _assert_ip4_route_exists (__FILE__, __LINE__, G_STRFUNC, exists, ifname, network, plen, metric)
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
gboolean nmtstp_ip_address_check_lifetime (const NMPlatformIPAddress *addr,
|
gboolean nmtstp_ip_address_check_lifetime (const NMPlatformIPAddress *addr,
|
||||||
gint64 now,
|
gint64 now,
|
||||||
guint32 expected_lifetime,
|
guint32 expected_lifetime,
|
||||||
|
|
@ -110,6 +120,7 @@ void nmtstp_ip_address_assert_lifetime (const NMPlatformIPAddress *addr,
|
||||||
gint64 now,
|
gint64 now,
|
||||||
guint32 expected_lifetime,
|
guint32 expected_lifetime,
|
||||||
guint32 expected_preferred);
|
guint32 expected_preferred);
|
||||||
|
|
||||||
void nmtstp_ip4_address_add (gboolean external_command,
|
void nmtstp_ip4_address_add (gboolean external_command,
|
||||||
int ifindex,
|
int ifindex,
|
||||||
in_addr_t address,
|
in_addr_t address,
|
||||||
|
|
@ -137,6 +148,8 @@ void nmtstp_ip6_address_del (gboolean external_command,
|
||||||
struct in6_addr address,
|
struct in6_addr address,
|
||||||
int plen);
|
int plen);
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
const NMPlatformLink *nmtstp_link_get_typed (NMPlatform *platform, int ifindex, const char *name, NMLinkType link_type);
|
const NMPlatformLink *nmtstp_link_get_typed (NMPlatform *platform, int ifindex, const char *name, NMLinkType link_type);
|
||||||
const NMPlatformLink *nmtstp_link_get (NMPlatform *platform, int ifindex, const char *name);
|
const NMPlatformLink *nmtstp_link_get (NMPlatform *platform, int ifindex, const char *name);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue