iPXE
netdev_test.h File Reference

Network device tests. More...

#include <ipxe/device.h>
#include <ipxe/netdevice.h>

Go to the source code of this file.

Data Structures

struct  testnet_setting
 A test network device setting. More...
struct  testnet
 A test network device. More...

Macros

#define TESTNET(NAME, ...)
 Declare a test network device.
#define testnet_ok(testnet)
 Report a network device creation test result.
#define testnet_open_ok(testnet)
 Report a network device opening test result.
#define testnet_set_ok(testnet, name, value)
 Report a network device setting test result.
#define testnet_close_ok(testnet)
 Report a network device closing test result.
#define testnet_remove_ok(testnet)
 Report a network device removal test result.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
void testnet_okx (struct testnet *testnet, const char *file, unsigned int line)
 Report a network device creation test result.
void testnet_open_okx (struct testnet *testnet, const char *file, unsigned int line)
 Report a network device opening test result.
void testnet_set_okx (struct testnet *testnet, const char *name, const char *value, const char *file, unsigned int line)
 Report a network device setting test result.
void testnet_close_okx (struct testnet *testnet, const char *file, unsigned int line)
 Report a network device closing test result.
void testnet_remove_okx (struct testnet *testnet, const char *file, unsigned int line)
 Report a network device removal test result.

Detailed Description

Network device tests.

Definition in file netdev_test.h.

Macro Definition Documentation

◆ TESTNET

#define TESTNET ( NAME,
... )
Value:
static struct testnet_setting NAME ## _setting[] = { \
__VA_ARGS__ \
}; \
static struct testnet NAME = { \
.dev = { \
.name = #NAME, \
.driver_name = "testnet", \
.siblings = \
LIST_HEAD_INIT ( NAME.dev.siblings ), \
.children = \
LIST_HEAD_INIT ( NAME.dev.children ), \
}, \
.testset = NAME ## _setting, \
.count = ( sizeof ( NAME ## _setting ) / \
sizeof ( NAME ## _setting[0] ) ), \
};
struct list_head children
Devices attached to this device.
Definition device.h:87
struct list_head siblings
Devices on the same bus.
Definition device.h:85
A test network device setting.
Definition netdev_test.h:16
A test network device.
Definition netdev_test.h:24
struct device dev
Dummy physical device.
Definition netdev_test.h:28

Declare a test network device.

Parameters
NAMENetwork device name
...Initial network device settings

Definition at line 41 of file netdev_test.h.

41#define TESTNET( NAME, ... ) \
42 static struct testnet_setting NAME ## _setting[] = { \
43 __VA_ARGS__ \
44 }; \
45 static struct testnet NAME = { \
46 .dev = { \
47 .name = #NAME, \
48 .driver_name = "testnet", \
49 .siblings = \
50 LIST_HEAD_INIT ( NAME.dev.siblings ), \
51 .children = \
52 LIST_HEAD_INIT ( NAME.dev.children ), \
53 }, \
54 .testset = NAME ## _setting, \
55 .count = ( sizeof ( NAME ## _setting ) / \
56 sizeof ( NAME ## _setting[0] ) ), \
57 };

◆ testnet_ok

#define testnet_ok ( testnet)
Value:
testnet_okx ( testnet, __FILE__, __LINE__ )
void testnet_okx(struct testnet *testnet, const char *file, unsigned int line)
Report a network device creation test result.

Report a network device creation test result.

Parameters
testnetTest network device

Definition at line 64 of file netdev_test.h.

Referenced by ipv4_test_exec().

◆ testnet_open_ok

#define testnet_open_ok ( testnet)
Value:
testnet_open_okx ( testnet, __FILE__, __LINE__ )
void testnet_open_okx(struct testnet *testnet, const char *file, unsigned int line)
Report a network device opening test result.

Report a network device opening test result.

Parameters
testnetTest network device

Definition at line 73 of file netdev_test.h.

73#define testnet_open_ok( testnet ) \
74 testnet_open_okx ( testnet, __FILE__, __LINE__ )

Referenced by ipv4_test_exec().

◆ testnet_set_ok

#define testnet_set_ok ( testnet,
name,
value )
Value:
testnet_set_okx ( testnet, name, value, __FILE__, __LINE__ )
pseudo_bit_t value[0x00020]
Definition arbel.h:2
const char * name
Definition ath9k_hw.c:1986
void testnet_set_okx(struct testnet *testnet, const char *name, const char *value, const char *file, unsigned int line)
Report a network device setting test result.

Report a network device setting test result.

Parameters
testnetTest network device
nameSetting name (relative to network device's settings)
valueSetting value

Definition at line 85 of file netdev_test.h.

85#define testnet_set_ok( testnet, name, value ) \
86 testnet_set_okx ( testnet, name, value, __FILE__, __LINE__ )

Referenced by ipv4_test_exec().

◆ testnet_close_ok

#define testnet_close_ok ( testnet)
Value:
testnet_close_okx ( testnet, __FILE__, __LINE__ )
void testnet_close_okx(struct testnet *testnet, const char *file, unsigned int line)
Report a network device closing test result.

Report a network device closing test result.

Parameters
testnetTest network device

Definition at line 96 of file netdev_test.h.

96#define testnet_close_ok( testnet ) \
97 testnet_close_okx ( testnet, __FILE__, __LINE__ )

Referenced by ipv4_test_exec().

◆ testnet_remove_ok

#define testnet_remove_ok ( testnet)
Value:
testnet_remove_okx ( testnet, __FILE__, __LINE__ )
void testnet_remove_okx(struct testnet *testnet, const char *file, unsigned int line)
Report a network device removal test result.

Report a network device removal test result.

Parameters
testnetTest network device

Definition at line 106 of file netdev_test.h.

106#define testnet_remove_ok( testnet ) \
107 testnet_remove_okx ( testnet, __FILE__, __LINE__ )

Referenced by ipv4_test_exec().

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ testnet_okx()

void testnet_okx ( struct testnet * testnet,
const char * file,
unsigned int line )
extern

Report a network device creation test result.

Parameters
testnetTest network device
fileTest code file
lineTest code line

Definition at line 104 of file netdev_test.c.

105 {
106 struct testnet_setting *testset;
107 unsigned int i;
108
109 /* Allocate device */
111 okx ( testnet->netdev != NULL, file, line );
114 snprintf ( testnet->netdev->name, sizeof ( testnet->netdev->name ),
115 "%s", testnet->dev.name );
116
117 /* Register device */
118 okx ( register_netdev ( testnet->netdev ) == 0, file, line );
119
120 /* Open device */
121 testnet_open_okx ( testnet, file, line );
122
123 /* Apply initial settings */
124 for ( i = 0 ; i < testnet->count ; i++ ) {
125 testset = &testnet->testset[i];
126 testnet_set_okx ( testnet, testset->name, testset->value,
127 file, line );
128 }
129}
#define NULL
NULL pointer (VOID *)
Definition Base.h:322
struct net_device * alloc_etherdev(size_t priv_size)
Allocate Ethernet device.
Definition ethernet.c:265
static struct net_device_operations testnet_operations
Test network device operations.
Definition netdev_test.c:90
int register_netdev(struct net_device *netdev)
Register network device.
Definition netdevice.c:760
static void netdev_init(struct net_device *netdev, struct net_device_operations *op)
Initialise a network device.
Definition netdevice.h:519
char name[40]
Name.
Definition device.h:79
char name[NETDEV_NAME_LEN]
Name of this network device.
Definition netdevice.h:363
struct device * dev
Underlying hardware device.
Definition netdevice.h:365
const char * name
Setting name (relative to network device's settings)
Definition netdev_test.h:18
const char * value
Value.
Definition netdev_test.h:20
unsigned int count
Number of initial settings.
Definition netdev_test.h:32
struct net_device * netdev
Network device.
Definition netdev_test.h:26
struct testnet_setting * testset
Initial settings.
Definition netdev_test.h:30
#define okx(success, file, line)
Report test result.
Definition test.h:44
int snprintf(char *buf, size_t size, const char *fmt,...)
Write a formatted string to a buffer.
Definition vsprintf.c:383

References alloc_etherdev(), testnet::count, net_device::dev, testnet::dev, device::name, net_device::name, testnet_setting::name, testnet::netdev, netdev_init(), NULL, okx, register_netdev(), snprintf(), testnet_open_okx(), testnet_operations, testnet_set_okx(), testnet::testset, and testnet_setting::value.

◆ testnet_open_okx()

void testnet_open_okx ( struct testnet * testnet,
const char * file,
unsigned int line )
extern

Report a network device opening test result.

Parameters
testnetTest network device
fileTest code file
lineTest code line

Definition at line 138 of file netdev_test.c.

139 {
140
141 /* Sanity check */
142 okx ( testnet->netdev != NULL, file, line );
143
144 /* Open device */
145 okx ( netdev_open ( testnet->netdev ) == 0, file, line );
146}
int netdev_open(struct net_device *netdev)
Open network device.
Definition netdevice.c:862

References testnet::netdev, netdev_open(), NULL, and okx.

Referenced by testnet_okx().

◆ testnet_set_okx()

void testnet_set_okx ( struct testnet * testnet,
const char * name,
const char * value,
const char * file,
unsigned int line )
extern

Report a network device setting test result.

Parameters
testnetTest network device
nameSetting name (relative to network device's settings)
valueSetting value
fileTest code file
lineTest code line

Definition at line 157 of file netdev_test.c.

159 {
160 char fullname[ strlen ( testnet->dev.name ) + 1 /* "." or "/" */ +
161 strlen ( name ) + 1 /* NUL */ ];
162 struct settings *settings;
163 struct setting setting;
164
165 /* Sanity check */
166 okx ( testnet->netdev != NULL, file, line );
168 okx ( settings != NULL, file, line );
169 okx ( strcmp ( settings->name, testnet->dev.name ) == 0, file, line );
170
171 /* Construct setting name */
172 snprintf ( fullname, sizeof ( fullname ), "%s%c%s", testnet->dev.name,
173 ( strchr ( name, '/' ) ? '.' : '/' ), name );
174
175 /* Parse setting name */
177 &settings, &setting ) == 0, file, line );
178
179 /* Apply setting */
180 okx ( storef_setting ( settings, &setting, value ) == 0, file, line );
181}
static struct settings * netdev_settings(struct net_device *netdev)
Get per-netdevice configuration settings block.
Definition netdevice.h:587
struct settings * autovivify_child_settings(struct settings *parent, const char *name)
Find or create child settings block.
Definition settings.c:307
int parse_setting_name(char *name, get_child_settings_t get_child, struct settings **settings, struct setting *setting)
Parse setting name.
Definition settings.c:1529
int storef_setting(struct settings *settings, const struct setting *setting, const char *value)
Store formatted value of setting.
Definition settings.c:1320
int strcmp(const char *first, const char *second)
Compare strings.
Definition string.c:174
char * strchr(const char *src, int character)
Find character within a string.
Definition string.c:272
size_t strlen(const char *src)
Get length of string.
Definition string.c:244
A setting.
Definition settings.h:24
A settings block.
Definition settings.h:133
const char * name
Name.
Definition settings.h:137

References autovivify_child_settings(), testnet::dev, device::name, name, settings::name, testnet::netdev, netdev_settings(), NULL, okx, parse_setting_name(), snprintf(), storef_setting(), strchr(), strcmp(), strlen(), and value.

Referenced by testnet_okx().

◆ testnet_close_okx()

void testnet_close_okx ( struct testnet * testnet,
const char * file,
unsigned int line )
extern

Report a network device closing test result.

Parameters
testnetTest network device
fileTest code file
lineTest code line

Definition at line 190 of file netdev_test.c.

191 {
192
193 /* Sanity check */
194 okx ( testnet->netdev != NULL, file, line );
195
196 /* Close device */
198}
void netdev_close(struct net_device *netdev)
Close network device.
Definition netdevice.c:896

References testnet::netdev, netdev_close(), NULL, and okx.

◆ testnet_remove_okx()

void testnet_remove_okx ( struct testnet * testnet,
const char * file,
unsigned int line )
extern

Report a network device removal test result.

Parameters
testnetTest network device
fileTest code file
lineTest code line

Definition at line 207 of file netdev_test.c.

208 {
209
210 /* Sanity check */
211 okx ( testnet->netdev != NULL, file, line );
212
213 /* Remove device */
218}
void unregister_netdev(struct net_device *netdev)
Unregister network device.
Definition netdevice.c:942
static void netdev_nullify(struct net_device *netdev)
Stop using a network device.
Definition netdevice.h:532
static void netdev_put(struct net_device *netdev)
Drop reference to network device.
Definition netdevice.h:576

References testnet::netdev, netdev_nullify(), netdev_put(), NULL, okx, and unregister_netdev().