diff options
author | Susant Sahani <susant@redhat.com> | 2018-06-02 18:36:33 +0530 |
---|---|---|
committer | Susant Sahani <susant@redhat.com> | 2018-06-03 08:16:11 +0530 |
commit | 56e7fb5088b05fc0c4827dd6ffa1272ce661fd6e (patch) | |
tree | 55c8ef204a8bf2ed4a561bbcd00a7f0ad0540971 /src | |
parent | 33de6b57a82a70a5b1e6991d0eb459f5c49578f9 (diff) | |
download | systemd-56e7fb5088b05fc0c4827dd6ffa1272ce661fd6e.tar.gz |
networkd: introduce netdev "Netdevsim" Driver
This "netdevsim" as implied by the name is a tool for network developers and is a simulator.
This simulated networking device is used for testing various networking APIs and at this time
is particularly focused on testing hardware offloading related interfaces.
Diffstat (limited to 'src')
-rw-r--r-- | src/libsystemd/sd-netlink/netlink-types.c | 1 | ||||
-rw-r--r-- | src/libsystemd/sd-netlink/netlink-types.h | 1 | ||||
-rw-r--r-- | src/network/meson.build | 2 | ||||
-rw-r--r-- | src/network/netdev/netdev.c | 3 | ||||
-rw-r--r-- | src/network/netdev/netdev.h | 1 | ||||
-rw-r--r-- | src/network/netdev/netdevsim.c | 15 | ||||
-rw-r--r-- | src/network/netdev/netdevsim.h | 19 |
7 files changed, 42 insertions, 0 deletions
diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c index 9dca344f8d..ddb4d90eaf 100644 --- a/src/libsystemd/sd-netlink/netlink-types.c +++ b/src/libsystemd/sd-netlink/netlink-types.c @@ -325,6 +325,7 @@ static const char* const nl_union_link_info_data_table[] = { [NL_UNION_LINK_INFO_DATA_GENEVE] = "geneve", [NL_UNION_LINK_INFO_DATA_VXCAN] = "vxcan", [NL_UNION_LINK_INFO_DATA_WIREGUARD] = "wireguard", + [NL_UNION_LINK_INFO_DATA_NETDEVSIM] = "netdevsim", }; DEFINE_STRING_TABLE_LOOKUP(nl_union_link_info_data, NLUnionLinkInfoData); diff --git a/src/libsystemd/sd-netlink/netlink-types.h b/src/libsystemd/sd-netlink/netlink-types.h index 456562d329..a7542eb33d 100644 --- a/src/libsystemd/sd-netlink/netlink-types.h +++ b/src/libsystemd/sd-netlink/netlink-types.h @@ -82,6 +82,7 @@ typedef enum NLUnionLinkInfoData { NL_UNION_LINK_INFO_DATA_GENEVE, NL_UNION_LINK_INFO_DATA_VXCAN, NL_UNION_LINK_INFO_DATA_WIREGUARD, + NL_UNION_LINK_INFO_DATA_NETDEVSIM, _NL_UNION_LINK_INFO_DATA_MAX, _NL_UNION_LINK_INFO_DATA_INVALID = -1 } NLUnionLinkInfoData; diff --git a/src/network/meson.build b/src/network/meson.build index e9ce2083ec..a717152e20 100644 --- a/src/network/meson.build +++ b/src/network/meson.build @@ -35,6 +35,8 @@ sources = files(''' netdev/vxcan.h netdev/wireguard.c netdev/wireguard.h + netdev/netdevsim.c + netdev/netdevsim.h networkd-address-label.c networkd-address-label.h networkd-address-pool.c diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index a0b2697183..da6a50c5a2 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -37,6 +37,7 @@ #include "netdev/vcan.h" #include "netdev/vxcan.h" #include "netdev/wireguard.h" +#include "netdev/netdevsim.h" const NetDevVTable * const netdev_vtable[_NETDEV_KIND_MAX] = { [NETDEV_KIND_BRIDGE] = &bridge_vtable, @@ -64,6 +65,7 @@ const NetDevVTable * const netdev_vtable[_NETDEV_KIND_MAX] = { [NETDEV_KIND_GENEVE] = &geneve_vtable, [NETDEV_KIND_VXCAN] = &vxcan_vtable, [NETDEV_KIND_WIREGUARD] = &wireguard_vtable, + [NETDEV_KIND_NETDEVSIM] = &netdevsim_vtable, }; static const char* const netdev_kind_table[_NETDEV_KIND_MAX] = { @@ -92,6 +94,7 @@ static const char* const netdev_kind_table[_NETDEV_KIND_MAX] = { [NETDEV_KIND_GENEVE] = "geneve", [NETDEV_KIND_VXCAN] = "vxcan", [NETDEV_KIND_WIREGUARD] = "wireguard", + [NETDEV_KIND_NETDEVSIM] = "netdevsim", }; DEFINE_STRING_TABLE_LOOKUP(netdev_kind, NetDevKind); diff --git a/src/network/netdev/netdev.h b/src/network/netdev/netdev.h index 0d0671d37b..fa90b14f86 100644 --- a/src/network/netdev/netdev.h +++ b/src/network/netdev/netdev.h @@ -48,6 +48,7 @@ typedef enum NetDevKind { NETDEV_KIND_GENEVE, NETDEV_KIND_VXCAN, NETDEV_KIND_WIREGUARD, + NETDEV_KIND_NETDEVSIM, _NETDEV_KIND_MAX, _NETDEV_KIND_INVALID = -1 } NetDevKind; diff --git a/src/network/netdev/netdevsim.c b/src/network/netdev/netdevsim.c new file mode 100644 index 0000000000..857a63f3de --- /dev/null +++ b/src/network/netdev/netdevsim.c @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ +/*** + This file is part of systemd. + + Copyright 2018 Susant Sahani +***/ + +#include "netdev/netdevsim.h" +#include "missing.h" + +const NetDevVTable netdevsim_vtable = { + .object_size = sizeof(NetDevSim), + .sections = "Match\0NetDev\0", + .create_type = NETDEV_CREATE_INDEPENDENT, +}; diff --git a/src/network/netdev/netdevsim.h b/src/network/netdev/netdevsim.h new file mode 100644 index 0000000000..1e560279ff --- /dev/null +++ b/src/network/netdev/netdevsim.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ +#pragma once + +/*** + This file is part of systemd. + + Copyright 2018 Susant Sahani +***/ + +typedef struct NetDevSim NetDevSim; + +#include "netdev/netdev.h" + +struct NetDevSim { + NetDev meta; +}; + +DEFINE_NETDEV_CAST(NETDEVSIM, NetDevSim); +extern const NetDevVTable netdevsim_vtable; |