|
Packit Service |
5ffa24 |
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
Packit Service |
5ffa24 |
/*
|
|
Packit Service |
5ffa24 |
* Copyright (C) 2016 - 2017 Red Hat, Inc.
|
|
Packit Service |
5ffa24 |
*/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#include <stdlib.h>
|
|
Packit Service |
5ffa24 |
#include <unistd.h>
|
|
Packit Service |
5ffa24 |
#include <syslog.h>
|
|
Packit Service |
5ffa24 |
#include <arpa/inet.h>
|
|
Packit Service |
5ffa24 |
#include <linux/if.h>
|
|
Packit Service |
5ffa24 |
#include <linux/if_link.h>
|
|
Packit Service |
5ffa24 |
#include <linux/ip6_tunnel.h>
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
dff8e4 |
#include "libnm-platform/nm-platform.h"
|
|
Packit Service |
dff8e4 |
#include "libnm-platform/nmp-object.h"
|
|
Packit Service |
5ffa24 |
#include "platform/nm-fake-platform.h"
|
|
Packit Service |
dff8e4 |
#include "libnm-platform/nm-linux-platform.h"
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#include "nm-test-utils-core.h"
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define DEVICE_NAME "nm-test-device"
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Bot |
c44df3 |
#define nmtstp_normalize_jiffies_time(requested_value, kernel_value) \
|
|
Packit Bot |
c44df3 |
({ \
|
|
Packit Bot |
c44df3 |
typeof(kernel_value) _kernel_value = (kernel_value); \
|
|
Packit Bot |
c44df3 |
typeof(_kernel_value) _requested_value = (requested_value); \
|
|
Packit Bot |
c44df3 |
\
|
|
Packit Bot |
c44df3 |
/* kernel stores some values (like bridge's forward_delay) in jiffies. When converting
|
|
Packit Bot |
c44df3 |
* back and forth (clock_t_to_jiffies()/jiffies_to_clock_t()), the value reported back
|
|
Packit Bot |
c44df3 |
* to user space may have rounding errors (of +/- 1), depending on CONFIG_HZ setting.
|
|
Packit Bot |
c44df3 |
*
|
|
Packit Bot |
c44df3 |
* Normalize the requested_value to the kernel_value, if it look as if a rounding
|
|
Packit Bot |
c44df3 |
* error happens. If the difference is larger than +/- 1, no normalization happens! */ \
|
|
Packit Bot |
c44df3 |
\
|
|
Packit Bot |
c44df3 |
((_requested_value >= (NM_MAX(_kernel_value, 1) - 1)) \
|
|
Packit Bot |
c44df3 |
&& (_requested_value <= (NM_MIN(_kernel_value, ~((typeof(_kernel_value)) 0) - 1) + 1))) \
|
|
Packit Bot |
c44df3 |
? _kernel_value \
|
|
Packit Bot |
c44df3 |
: _requested_value; \
|
|
Packit Bot |
c44df3 |
})
|
|
Packit Bot |
c44df3 |
|
|
Packit Service |
5ffa24 |
#define _NMLOG_PREFIX_NAME "platform-test"
|
|
Packit Service |
5ffa24 |
#define _NMLOG_DOMAIN LOGD_PLATFORM
|
|
Packit Service |
5ffa24 |
#define _NMLOG(level, ...) _LOG(level, _NMLOG_DOMAIN, __VA_ARGS__)
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define _LOG(level, domain, ...) \
|
|
Packit Service |
5ffa24 |
G_STMT_START \
|
|
Packit Service |
5ffa24 |
{ \
|
|
Packit Service |
5ffa24 |
const NMLogLevel __level = (level); \
|
|
Packit Service |
5ffa24 |
const NMLogDomain __domain = (domain); \
|
|
Packit Service |
5ffa24 |
\
|
|
Packit Service |
5ffa24 |
if (nm_logging_enabled(__level, __domain)) { \
|
|
Packit Service |
5ffa24 |
gint64 _ts = nm_utils_get_monotonic_timestamp_nsec(); \
|
|
Packit Service |
5ffa24 |
\
|
|
Packit Service |
5ffa24 |
_nm_log(__level, \
|
|
Packit Service |
5ffa24 |
__domain, \
|
|
Packit Service |
5ffa24 |
0, \
|
|
Packit Service |
5ffa24 |
NULL, \
|
|
Packit Service |
5ffa24 |
NULL, \
|
|
Packit Service |
5ffa24 |
"%s[%ld.%09ld]: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
|
|
Packit Service |
5ffa24 |
_NMLOG_PREFIX_NAME, \
|
|
Packit Service |
5ffa24 |
(long) (_ts / NM_UTILS_NSEC_PER_SEC), \
|
|
Packit Service |
5ffa24 |
(long) (_ts % NM_UTILS_NSEC_PER_SEC) _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
|
|
Packit Service |
5ffa24 |
} \
|
|
Packit Service |
5ffa24 |
} \
|
|
Packit Service |
5ffa24 |
G_STMT_END
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
gboolean nmtstp_is_root_test(void);
|
|
Packit Service |
5ffa24 |
gboolean nmtstp_is_sysfs_writable(void);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
typedef struct _NMTstpNamespaceHandle NMTstpNamespaceHandle;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
NMTstpNamespaceHandle *nmtstp_namespace_create(int flags, GError **error);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void nmtstp_namespace_handle_release(NMTstpNamespaceHandle *handle);
|
|
Packit Service |
5ffa24 |
pid_t nmtstp_namespace_handle_get_pid(NMTstpNamespaceHandle *handle);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
int nmtstp_namespace_get_fd_for_process(pid_t pid, const char *ns_name);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void nmtstp_netns_select_random(NMPlatform **platforms, gsize n_platforms, NMPNetns **netns);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
typedef struct {
|
|
Packit Service |
5ffa24 |
gulong handler_id;
|
|
Packit Service |
5ffa24 |
const char * name;
|
|
Packit Service |
5ffa24 |
NMPlatformSignalChangeType change_type;
|
|
Packit Service |
5ffa24 |
int received_count;
|
|
Packit Service |
5ffa24 |
GMainLoop * loop;
|
|
Packit Service |
5ffa24 |
int ifindex;
|
|
Packit Service |
5ffa24 |
const char * ifname;
|
|
Packit Service |
5ffa24 |
} SignalData;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
SignalData *add_signal_full(const char * name,
|
|
Packit Service |
5ffa24 |
NMPlatformSignalChangeType change_type,
|
|
Packit Service |
5ffa24 |
GCallback callback,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
const char * ifname);
|
|
Packit Service |
5ffa24 |
#define add_signal(name, change_type, callback) \
|
|
Packit Service |
5ffa24 |
add_signal_full(name, change_type, (GCallback) callback, 0, NULL)
|
|
Packit Service |
5ffa24 |
#define add_signal_ifindex(name, change_type, callback, ifindex) \
|
|
Packit Service |
5ffa24 |
add_signal_full(name, change_type, (GCallback) callback, ifindex, NULL)
|
|
Packit Service |
5ffa24 |
#define add_signal_ifname(name, change_type, callback, ifname) \
|
|
Packit Service |
5ffa24 |
add_signal_full(name, change_type, (GCallback) callback, 0, ifname)
|
|
Packit Service |
5ffa24 |
void _accept_signal(const char *file, int line, const char *func, SignalData *data);
|
|
Packit Service |
5ffa24 |
void
|
|
Packit Service |
5ffa24 |
_accept_signals(const char *file, int line, const char *func, SignalData *data, int min, int max);
|
|
Packit Service |
5ffa24 |
void _wait_signal(const char *file, int line, const char *func, SignalData *data);
|
|
Packit Service |
5ffa24 |
void _accept_or_wait_signal(const char *file, int line, const char *func, SignalData *data);
|
|
Packit Service |
5ffa24 |
void _ensure_no_signal(const char *file, int line, const char *func, SignalData *data);
|
|
Packit Service |
5ffa24 |
void _free_signal(const char *file, int line, const char *func, SignalData *data);
|
|
Packit Service |
5ffa24 |
#define accept_signal(data) _accept_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
|
Packit Service |
5ffa24 |
#define accept_signals(data, min, max) \
|
|
Packit Service |
5ffa24 |
_accept_signals(__FILE__, __LINE__, G_STRFUNC, data, min, max)
|
|
Packit Service |
5ffa24 |
#define wait_signal(data) _wait_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
|
Packit Service |
5ffa24 |
#define accept_or_wait_signal(data) _accept_or_wait_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
|
Packit Service |
5ffa24 |
#define ensure_no_signal(data) _ensure_no_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
|
Packit Service |
5ffa24 |
#define free_signal(data) _free_signal(__FILE__, __LINE__, G_STRFUNC, data)
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void link_callback(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
int obj_type_i,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
NMPlatformLink *received,
|
|
Packit Service |
5ffa24 |
int change_type_i,
|
|
Packit Service |
5ffa24 |
SignalData * data);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
int nmtstp_run_command(const char *format, ...) _nm_printf(1, 2);
|
|
Packit Service |
5ffa24 |
#define nmtstp_run_command_check(...) \
|
|
Packit Service |
5ffa24 |
do { \
|
|
Packit Service |
5ffa24 |
g_assert_cmpint(nmtstp_run_command(__VA_ARGS__), ==, 0); \
|
|
Packit Service |
5ffa24 |
} while (0)
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
guint nmtstp_wait_for_signal(NMPlatform *platform, gint64 timeout_msec);
|
|
Packit Service |
5ffa24 |
guint nmtstp_wait_for_signal_until(NMPlatform *platform, gint64 until_ms);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_wait_for_link(NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
const char *ifname,
|
|
Packit Service |
5ffa24 |
NMLinkType expected_link_type,
|
|
Packit Service |
5ffa24 |
gint64 timeout_msec);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_wait_for_link_until(NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
const char *ifname,
|
|
Packit Service |
5ffa24 |
NMLinkType expected_link_type,
|
|
Packit Service |
5ffa24 |
gint64 until_ms);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define nmtstp_assert_wait_for_signal(platform, timeout_msec) \
|
|
Packit Service |
5ffa24 |
G_STMT_START \
|
|
Packit Service |
5ffa24 |
{ \
|
|
Packit Service |
5ffa24 |
if (nmtstp_wait_for_signal(platform, timeout_msec) == 0) \
|
|
Packit Service |
5ffa24 |
g_assert_not_reached(); \
|
|
Packit Service |
5ffa24 |
} \
|
|
Packit Service |
5ffa24 |
G_STMT_END
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define nmtstp_assert_wait_for_signal_until(platform, until_ms) \
|
|
Packit Service |
5ffa24 |
G_STMT_START \
|
|
Packit Service |
5ffa24 |
{ \
|
|
Packit Service |
5ffa24 |
if (nmtstp_wait_for_signal_until(platform, until_ms) == 0) \
|
|
Packit Service |
5ffa24 |
g_assert_not_reached(); \
|
|
Packit Service |
5ffa24 |
} \
|
|
Packit Service |
5ffa24 |
G_STMT_END
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define nmtstp_assert_wait_for_link(platform, ifname, expected_link_type, timeout_msec) \
|
|
Packit Service |
5ffa24 |
nmtst_assert_nonnull(nmtstp_wait_for_link(platform, ifname, expected_link_type, timeout_msec))
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define nmtstp_assert_wait_for_link_until(platform, ifname, expected_link_type, until_ms) \
|
|
Packit Service |
5ffa24 |
nmtst_assert_nonnull(nmtstp_wait_for_link_until(platform, ifname, expected_link_type, until_ms))
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
int nmtstp_run_command_check_external_global(void);
|
|
Packit Service |
5ffa24 |
gboolean nmtstp_run_command_check_external(int external_command);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
const NMPlatformIP4Route *_nmtstp_assert_ip4_route_exists(const char *file,
|
|
Packit Service |
5ffa24 |
guint line,
|
|
Packit Service |
5ffa24 |
const char *func,
|
|
Packit Service |
5ffa24 |
NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
int c_exists,
|
|
Packit Service |
5ffa24 |
const char *ifname,
|
|
Packit Service |
5ffa24 |
guint32 network,
|
|
Packit Service |
5ffa24 |
int plen,
|
|
Packit Service |
5ffa24 |
guint32 metric,
|
|
Packit Service |
5ffa24 |
guint8 tos);
|
|
Packit Service |
5ffa24 |
#define nmtstp_assert_ip4_route_exists(platform, c_exists, ifname, network, plen, metric, tos) \
|
|
Packit Service |
5ffa24 |
_nmtstp_assert_ip4_route_exists(__FILE__, \
|
|
Packit Service |
5ffa24 |
__LINE__, \
|
|
Packit Service |
5ffa24 |
G_STRFUNC, \
|
|
Packit Service |
5ffa24 |
platform, \
|
|
Packit Service |
5ffa24 |
c_exists, \
|
|
Packit Service |
5ffa24 |
ifname, \
|
|
Packit Service |
5ffa24 |
network, \
|
|
Packit Service |
5ffa24 |
plen, \
|
|
Packit Service |
5ffa24 |
metric, \
|
|
Packit Service |
5ffa24 |
tos)
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
const NMPlatformIP4Route *nmtstp_ip4_route_get(NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
guint32 network,
|
|
Packit Service |
5ffa24 |
int plen,
|
|
Packit Service |
5ffa24 |
guint32 metric,
|
|
Packit Service |
5ffa24 |
guint8 tos);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
const NMPlatformIP6Route *_nmtstp_assert_ip6_route_exists(const char * file,
|
|
Packit Service |
5ffa24 |
guint line,
|
|
Packit Service |
5ffa24 |
const char * func,
|
|
Packit Service |
5ffa24 |
NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
int c_exists,
|
|
Packit Service |
5ffa24 |
const char * ifname,
|
|
Packit Service |
5ffa24 |
const struct in6_addr *network,
|
|
Packit Service |
5ffa24 |
guint plen,
|
|
Packit Service |
5ffa24 |
guint32 metric,
|
|
Packit Service |
5ffa24 |
const struct in6_addr *src,
|
|
Packit Service |
5ffa24 |
guint8 src_plen);
|
|
Packit Service |
5ffa24 |
#define nmtstp_assert_ip6_route_exists(platform, \
|
|
Packit Service |
5ffa24 |
c_exists, \
|
|
Packit Service |
5ffa24 |
ifname, \
|
|
Packit Service |
5ffa24 |
network, \
|
|
Packit Service |
5ffa24 |
plen, \
|
|
Packit Service |
5ffa24 |
metric, \
|
|
Packit Service |
5ffa24 |
src, \
|
|
Packit Service |
5ffa24 |
src_plen) \
|
|
Packit Service |
5ffa24 |
_nmtstp_assert_ip6_route_exists(__FILE__, \
|
|
Packit Service |
5ffa24 |
__LINE__, \
|
|
Packit Service |
5ffa24 |
G_STRFUNC, \
|
|
Packit Service |
5ffa24 |
platform, \
|
|
Packit Service |
5ffa24 |
c_exists, \
|
|
Packit Service |
5ffa24 |
ifname, \
|
|
Packit Service |
5ffa24 |
network, \
|
|
Packit Service |
5ffa24 |
plen, \
|
|
Packit Service |
5ffa24 |
metric, \
|
|
Packit Service |
5ffa24 |
src, \
|
|
Packit Service |
5ffa24 |
src_plen)
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
const NMPlatformIP6Route *nmtstp_ip6_route_get(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
const struct in6_addr *network,
|
|
Packit Service |
5ffa24 |
guint plen,
|
|
Packit Service |
5ffa24 |
guint32 metric,
|
|
Packit Service |
5ffa24 |
const struct in6_addr *src,
|
|
Packit Service |
5ffa24 |
guint8 src_plen);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
gboolean nmtstp_ip_address_check_lifetime(const NMPlatformIPAddress *addr,
|
|
Packit Service |
5ffa24 |
gint64 now,
|
|
Packit Service |
5ffa24 |
guint32 expected_lifetime,
|
|
Packit Service |
5ffa24 |
guint32 expected_preferred);
|
|
Packit Service |
5ffa24 |
void nmtstp_ip_address_assert_lifetime(const NMPlatformIPAddress *addr,
|
|
Packit Service |
5ffa24 |
gint64 now,
|
|
Packit Service |
5ffa24 |
guint32 expected_lifetime,
|
|
Packit Service |
5ffa24 |
guint32 expected_preferred);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void nmtstp_ip4_address_add(NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
in_addr_t address,
|
|
Packit Service |
5ffa24 |
int plen,
|
|
Packit Service |
5ffa24 |
in_addr_t peer_address,
|
|
Packit Service |
5ffa24 |
guint32 lifetime,
|
|
Packit Service |
5ffa24 |
guint32 preferred,
|
|
Packit Service |
5ffa24 |
guint32 flags,
|
|
Packit Service |
5ffa24 |
const char *label);
|
|
Packit Service |
5ffa24 |
void nmtstp_ip6_address_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
struct in6_addr address,
|
|
Packit Service |
5ffa24 |
int plen,
|
|
Packit Service |
5ffa24 |
struct in6_addr peer_address,
|
|
Packit Service |
5ffa24 |
guint32 lifetime,
|
|
Packit Service |
5ffa24 |
guint32 preferred,
|
|
Packit Service |
5ffa24 |
guint32 flags);
|
|
Packit Service |
5ffa24 |
void nmtstp_ip4_address_del(NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
in_addr_t address,
|
|
Packit Service |
5ffa24 |
int plen,
|
|
Packit Service |
5ffa24 |
in_addr_t peer_address);
|
|
Packit Service |
5ffa24 |
void nmtstp_ip6_address_del(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
struct in6_addr address,
|
|
Packit Service |
5ffa24 |
int plen);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void nmtstp_ip4_route_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
NMIPConfigSource source,
|
|
Packit Service |
5ffa24 |
in_addr_t network,
|
|
Packit Service |
5ffa24 |
guint8 plen,
|
|
Packit Service |
5ffa24 |
in_addr_t gateway,
|
|
Packit Service |
5ffa24 |
in_addr_t pref_src,
|
|
Packit Service |
5ffa24 |
guint32 metric,
|
|
Packit Service |
5ffa24 |
guint32 mss);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void nmtstp_ip6_route_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
NMIPConfigSource source,
|
|
Packit Service |
5ffa24 |
struct in6_addr network,
|
|
Packit Service |
5ffa24 |
guint8 plen,
|
|
Packit Service |
5ffa24 |
struct in6_addr gateway,
|
|
Packit Service |
5ffa24 |
struct in6_addr pref_src,
|
|
Packit Service |
5ffa24 |
guint32 metric,
|
|
Packit Service |
5ffa24 |
guint32 mss);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline GPtrArray *
|
|
Packit Service |
5ffa24 |
nmtstp_ip4_route_get_all(NMPlatform *platform, int ifindex)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
return nm_platform_lookup_object_clone(
|
|
Packit Service |
5ffa24 |
platform,
|
|
Packit Service |
5ffa24 |
NMP_OBJECT_TYPE_IP4_ROUTE,
|
|
Packit Service |
5ffa24 |
ifindex,
|
|
Packit Service |
5ffa24 |
nm_platform_lookup_predicate_routes_main_skip_rtprot_kernel,
|
|
Packit Service |
5ffa24 |
NULL);
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline GPtrArray *
|
|
Packit Service |
5ffa24 |
nmtstp_ip6_route_get_all(NMPlatform *platform, int ifindex)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
return nm_platform_lookup_object_clone(
|
|
Packit Service |
5ffa24 |
platform,
|
|
Packit Service |
5ffa24 |
NMP_OBJECT_TYPE_IP6_ROUTE,
|
|
Packit Service |
5ffa24 |
ifindex,
|
|
Packit Service |
5ffa24 |
nm_platform_lookup_predicate_routes_main_skip_rtprot_kernel,
|
|
Packit Service |
5ffa24 |
NULL);
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
GArray *nmtstp_platform_ip4_address_get_all(NMPlatform *self, int ifindex);
|
|
Packit Service |
5ffa24 |
GArray *nmtstp_platform_ip6_address_get_all(NMPlatform *self, int ifindex);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
const NMPlatformIPAddress *
|
|
Packit Service |
5ffa24 |
nmtstp_platform_ip_address_find(NMPlatform *self, int ifindex, int addr_family, gconstpointer addr);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline const NMPlatformIP4Address *
|
|
Packit Service |
5ffa24 |
nmtstp_platform_ip4_address_find(NMPlatform *self, int ifindex, in_addr_t addr)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
return (const NMPlatformIP4Address *)
|
|
Packit Service |
5ffa24 |
nmtstp_platform_ip_address_find(self, ifindex, AF_INET, &addr);
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline const NMPlatformIP6Address *
|
|
Packit Service |
5ffa24 |
nmtstp_platform_ip6_address_find(NMPlatform *self, int ifindex, const struct in6_addr *addr)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
return (const NMPlatformIP6Address *)
|
|
Packit Service |
5ffa24 |
nmtstp_platform_ip_address_find(self, ifindex, AF_INET6, addr);
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void _nmtstp_platform_ip_addresses_assert(const char * filename,
|
|
Packit Service |
5ffa24 |
int lineno,
|
|
Packit Service |
5ffa24 |
NMPlatform * self,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
gboolean force_exact_4,
|
|
Packit Service |
5ffa24 |
gboolean force_exact_6,
|
|
Packit Service |
5ffa24 |
gboolean ignore_ll6,
|
|
Packit Service |
5ffa24 |
guint addrs_len,
|
|
Packit Service |
5ffa24 |
const char *const *addrs);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define nmtstp_platform_ip_addresses_assert(self, \
|
|
Packit Service |
5ffa24 |
ifindex, \
|
|
Packit Service |
5ffa24 |
force_exact_4, \
|
|
Packit Service |
5ffa24 |
force_exact_6, \
|
|
Packit Service |
5ffa24 |
ignore_ll6, \
|
|
Packit Service |
5ffa24 |
...) \
|
|
Packit Service |
5ffa24 |
_nmtstp_platform_ip_addresses_assert(__FILE__, \
|
|
Packit Service |
5ffa24 |
__LINE__, \
|
|
Packit Service |
5ffa24 |
(self), \
|
|
Packit Service |
5ffa24 |
(ifindex), \
|
|
Packit Service |
5ffa24 |
(force_exact_4), \
|
|
Packit Service |
5ffa24 |
(force_exact_6), \
|
|
Packit Service |
5ffa24 |
(ignore_ll6), \
|
|
Packit Service |
5ffa24 |
NM_NARG(__VA_ARGS__), \
|
|
Packit Service |
5ffa24 |
((const char *const[]){"dummy", ##__VA_ARGS__, NULL}) \
|
|
Packit Service |
5ffa24 |
+ 1)
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline gboolean
|
|
Packit Service |
5ffa24 |
_nmtstp_platform_routing_rules_get_all_predicate(const NMPObject *obj, gpointer user_data)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
int addr_family = GPOINTER_TO_INT(user_data);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
g_assert(NMP_OBJECT_GET_TYPE(obj) == NMP_OBJECT_TYPE_ROUTING_RULE);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
return addr_family == AF_UNSPEC
|
|
Packit Service |
5ffa24 |
|| NMP_OBJECT_CAST_ROUTING_RULE(obj)->addr_family == addr_family;
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline GPtrArray *
|
|
Packit Service |
5ffa24 |
nmtstp_platform_routing_rules_get_all(NMPlatform *platform, int addr_family)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
NMPLookup lookup;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
g_assert(NM_IS_PLATFORM(platform));
|
|
Packit Service |
5ffa24 |
g_assert(NM_IN_SET(addr_family, AF_UNSPEC, AF_INET, AF_INET6));
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
nmp_lookup_init_obj_type(&lookup, NMP_OBJECT_TYPE_ROUTING_RULE);
|
|
Packit Service |
5ffa24 |
return nm_platform_lookup_clone(platform,
|
|
Packit Service |
5ffa24 |
&lookup,
|
|
Packit Service |
5ffa24 |
_nmtstp_platform_routing_rules_get_all_predicate,
|
|
Packit Service |
5ffa24 |
GINT_TO_POINTER(addr_family));
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline guint
|
|
Packit Service |
5ffa24 |
nmtstp_platform_routing_rules_get_count(NMPlatform *platform, int addr_family)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
const NMDedupMultiHeadEntry *head_entry;
|
|
Packit Service |
5ffa24 |
NMDedupMultiIter iter;
|
|
Packit Service |
5ffa24 |
const NMPObject * obj;
|
|
Packit Service |
5ffa24 |
NMPLookup lookup;
|
|
Packit Service |
5ffa24 |
guint n;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
g_assert(NM_IS_PLATFORM(platform));
|
|
Packit Service |
5ffa24 |
g_assert(NM_IN_SET(addr_family, AF_UNSPEC, AF_INET, AF_INET6));
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
nmp_lookup_init_obj_type(&lookup, NMP_OBJECT_TYPE_ROUTING_RULE);
|
|
Packit Service |
5ffa24 |
head_entry = nm_platform_lookup(platform, &lookup);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
n = 0;
|
|
Packit Service |
5ffa24 |
nmp_cache_iter_for_each (&iter, head_entry, &obj) {
|
|
Packit Service |
5ffa24 |
if (_nmtstp_platform_routing_rules_get_all_predicate(obj, GINT_TO_POINTER(addr_family)))
|
|
Packit Service |
5ffa24 |
n++;
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
return n;
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
gboolean nmtstp_platform_ip4_route_delete(NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
in_addr_t network,
|
|
Packit Service |
5ffa24 |
guint8 plen,
|
|
Packit Service |
5ffa24 |
guint32 metric);
|
|
Packit Service |
5ffa24 |
gboolean nmtstp_platform_ip6_route_delete(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
struct in6_addr network,
|
|
Packit Service |
5ffa24 |
guint8 plen,
|
|
Packit Service |
5ffa24 |
guint32 metric);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *
|
|
Packit Service |
5ffa24 |
nmtstp_link_get_typed(NMPlatform *platform, int ifindex, const char *name, NMLinkType link_type);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_get(NMPlatform *platform, int ifindex, const char *name);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
gboolean nmtstp_kernel_support_get(NMPlatformKernelSupportType type);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void
|
|
Packit Service |
5ffa24 |
nmtstp_link_set_updown(NMPlatform *platform, gboolean external_command, int ifindex, gboolean up);
|
|
Packit Service |
5ffa24 |
|
|
Packit Bot |
c44df3 |
const NMPlatformLnkBridge *
|
|
Packit Bot |
c44df3 |
nmtstp_link_bridge_normalize_jiffies_time(const NMPlatformLnkBridge *requested,
|
|
Packit Bot |
c44df3 |
const NMPlatformLnkBridge *kernel,
|
|
Packit Bot |
c44df3 |
NMPlatformLnkBridge * dst);
|
|
Packit Bot |
c44df3 |
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_bridge_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkBridge *lnk);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_veth_add(NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char *name,
|
|
Packit Service |
5ffa24 |
const char *peer);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *
|
|
Packit Service |
5ffa24 |
nmtstp_link_dummy_add(NMPlatform *platform, gboolean external_command, const char *name);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_gre_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkGre *lnk);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_ip6tnl_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkIp6Tnl *lnk);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_ip6gre_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkIp6Tnl *lnk);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_ipip_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkIpIp *lnk);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_macvlan_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
int parent,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkMacvlan *lnk);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_sit_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkSit *lnk);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_tun_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkTun *lnk,
|
|
Packit Service |
5ffa24 |
int * out_fd);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_vrf_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkVrf *lnk,
|
|
Packit Service |
5ffa24 |
gboolean * out_not_supported);
|
|
Packit Service |
5ffa24 |
const NMPlatformLink *nmtstp_link_vxlan_add(NMPlatform * platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
const char * name,
|
|
Packit Service |
5ffa24 |
const NMPlatformLnkVxlan *lnk);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void nmtstp_link_delete(NMPlatform *platform,
|
|
Packit Service |
5ffa24 |
gboolean external_command,
|
|
Packit Service |
5ffa24 |
int ifindex,
|
|
Packit Service |
5ffa24 |
const char *name,
|
|
Packit Service |
5ffa24 |
gboolean require_exist);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
extern int NMTSTP_ENV1_IFINDEX;
|
|
Packit Service |
5ffa24 |
extern int NMTSTP_ENV1_EX;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline void
|
|
Packit Service |
5ffa24 |
_nmtstp_env1_wrapper_setup(const NmtstTestData *test_data)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
int * p_ifindex;
|
|
Packit Service |
5ffa24 |
gpointer p_ifup;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
nmtst_test_data_unpack(test_data, &p_ifindex, NULL, NULL, NULL, &p_ifup);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
g_assert(p_ifindex && *p_ifindex == -1);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
_LOGT("TEST[%s]: setup", test_data->testpath);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
nmtstp_link_delete(NM_PLATFORM_GET, -1, -1, DEVICE_NAME, FALSE);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
g_assert(NMTST_NM_ERR_SUCCESS(nm_platform_link_dummy_add(NM_PLATFORM_GET, DEVICE_NAME, NULL)));
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
*p_ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
|
|
Packit Service |
5ffa24 |
g_assert_cmpint(*p_ifindex, >, 0);
|
|
Packit Service |
5ffa24 |
g_assert_cmpint(NMTSTP_ENV1_IFINDEX, ==, -1);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
if (GPOINTER_TO_INT(p_ifup))
|
|
Packit Bot |
c44df3 |
g_assert(nm_platform_link_change_flags(NM_PLATFORM_GET, *p_ifindex, IFF_UP, TRUE) >= 0);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
nm_platform_process_events(NM_PLATFORM_GET);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
NMTSTP_ENV1_IFINDEX = *p_ifindex;
|
|
Packit Service |
5ffa24 |
NMTSTP_ENV1_EX = nmtstp_run_command_check_external_global();
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline void
|
|
Packit Service |
5ffa24 |
_nmtstp_env1_wrapper_run(gconstpointer user_data)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
const NmtstTestData *test_data = user_data;
|
|
Packit Service |
5ffa24 |
GTestDataFunc test_func_data;
|
|
Packit Service |
5ffa24 |
GTestFunc test_func;
|
|
Packit Service |
5ffa24 |
gconstpointer d;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
nmtst_test_data_unpack(test_data, NULL, &test_func, &test_func_data, &d, NULL);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
_LOGT("TEST[%s]: run", test_data->testpath);
|
|
Packit Service |
5ffa24 |
if (test_func)
|
|
Packit Service |
5ffa24 |
test_func();
|
|
Packit Service |
5ffa24 |
else
|
|
Packit Service |
5ffa24 |
test_func_data(d);
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
static inline void
|
|
Packit Service |
5ffa24 |
_nmtstp_env1_wrapper_teardown(const NmtstTestData *test_data)
|
|
Packit Service |
5ffa24 |
{
|
|
Packit Service |
5ffa24 |
int *p_ifindex;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
nmtst_test_data_unpack(test_data, &p_ifindex, NULL, NULL, NULL, NULL);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
g_assert_cmpint(NMTSTP_ENV1_IFINDEX, ==, *p_ifindex);
|
|
Packit Service |
5ffa24 |
NMTSTP_ENV1_IFINDEX = -1;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
_LOGT("TEST[%s]: teardown", test_data->testpath);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
g_assert_cmpint(*p_ifindex, ==, nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME));
|
|
Packit Service |
5ffa24 |
g_assert(nm_platform_link_delete(NM_PLATFORM_GET, *p_ifindex));
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
nm_platform_process_events(NM_PLATFORM_GET);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
_LOGT("TEST[%s]: finished", test_data->testpath);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
*p_ifindex = -1;
|
|
Packit Service |
5ffa24 |
}
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/* add test function, that set's up a particular environment, consisting
|
|
Packit Service |
5ffa24 |
* of a dummy device with ifindex NMTSTP_ENV1_IFINDEX. */
|
|
Packit Service |
5ffa24 |
#define _nmtstp_env1_add_test_func_full(testpath, test_func, test_data_func, arg, ifup) \
|
|
Packit Service |
5ffa24 |
nmtst_add_test_func_full(testpath, \
|
|
Packit Service |
5ffa24 |
_nmtstp_env1_wrapper_run, \
|
|
Packit Service |
5ffa24 |
_nmtstp_env1_wrapper_setup, \
|
|
Packit Service |
5ffa24 |
_nmtstp_env1_wrapper_teardown, \
|
|
Packit Service |
5ffa24 |
({ \
|
|
Packit Service |
5ffa24 |
static int _ifindex = -1; \
|
|
Packit Service |
5ffa24 |
&_ifindex; \
|
|
Packit Service |
5ffa24 |
}), \
|
|
Packit Service |
5ffa24 |
({ \
|
|
Packit Service |
5ffa24 |
GTestFunc _test_func = (test_func); \
|
|
Packit Service |
5ffa24 |
_test_func; \
|
|
Packit Service |
5ffa24 |
}), \
|
|
Packit Service |
5ffa24 |
({ \
|
|
Packit Service |
5ffa24 |
GTestDataFunc _test_func = (test_data_func); \
|
|
Packit Service |
5ffa24 |
_test_func; \
|
|
Packit Service |
5ffa24 |
}), \
|
|
Packit Service |
5ffa24 |
(arg), \
|
|
Packit Service |
5ffa24 |
({ \
|
|
Packit Service |
5ffa24 |
gboolean _ifup = (ifup); \
|
|
Packit Service |
5ffa24 |
GINT_TO_POINTER(_ifup); \
|
|
Packit Service |
5ffa24 |
}))
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define nmtstp_env1_add_test_func_data(testpath, test_func, arg, ifup) \
|
|
Packit Service |
5ffa24 |
_nmtstp_env1_add_test_func_full(testpath, NULL, test_func, arg, ifup)
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
#define nmtstp_env1_add_test_func(testpath, test_func, ifup) \
|
|
Packit Service |
5ffa24 |
_nmtstp_env1_add_test_func_full(testpath, test_func, NULL, NULL, ifup)
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
typedef void (*NMTstpSetupFunc)(void);
|
|
Packit Service |
5ffa24 |
extern NMTstpSetupFunc const _nmtstp_setup_platform_func;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void nmtstp_setup_platform(void);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
typedef struct _NMTstpAcdDefender NMTstpAcdDefender;
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
NMTstpAcdDefender *
|
|
Packit Service |
5ffa24 |
nmtstp_acd_defender_new(int ifindex, in_addr_t ip_addr, const NMEtherAddr *mac_addr);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void nmtstp_acd_defender_destroy(NMTstpAcdDefender *defender);
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
/*****************************************************************************/
|
|
Packit Service |
5ffa24 |
|
|
Packit Service |
5ffa24 |
void _nmtstp_init_tests(int *argc, char ***argv);
|
|
Packit Service |
5ffa24 |
void _nmtstp_setup_tests(void);
|