Compare commits
5 Commits
43a20059a5
...
debda5a4e5
Author | SHA1 | Date |
---|---|---|
Yu Watanabe | debda5a4e5 | |
Yu Watanabe | 6d62ec61b9 | |
Yu Watanabe | b076d5d76d | |
Susant Sahani | 3295a461b3 | |
Susant Sahani | cec1552ad4 |
|
@ -182,6 +182,9 @@
|
|||
<row><entry><varname>xfrm</varname></entry>
|
||||
<entry>A virtual tunnel interface like vti/vti6 but with several advantages.</entry></row>
|
||||
|
||||
<row><entry><varname>ifb</varname></entry>
|
||||
<entry> The Intermediate Functional Block (ifb) pseudo network interface acts as a QoS concentrator for multiple different sources of traffic.</entry></row>
|
||||
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
|
|
@ -371,6 +371,7 @@ static const char* const nl_union_link_info_data_table[] = {
|
|||
[NL_UNION_LINK_INFO_DATA_MACSEC] = "macsec",
|
||||
[NL_UNION_LINK_INFO_DATA_NLMON] = "nlmon",
|
||||
[NL_UNION_LINK_INFO_DATA_XFRM] = "xfrm",
|
||||
[NL_UNION_LINK_INFO_DATA_IFB] = "ifb",
|
||||
};
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(nl_union_link_info_data, NLUnionLinkInfoData);
|
||||
|
|
|
@ -83,6 +83,7 @@ typedef enum NLUnionLinkInfoData {
|
|||
NL_UNION_LINK_INFO_DATA_MACSEC,
|
||||
NL_UNION_LINK_INFO_DATA_NLMON,
|
||||
NL_UNION_LINK_INFO_DATA_XFRM,
|
||||
NL_UNION_LINK_INFO_DATA_IFB,
|
||||
_NL_UNION_LINK_INFO_DATA_MAX,
|
||||
_NL_UNION_LINK_INFO_DATA_INVALID = -1
|
||||
} NLUnionLinkInfoData;
|
||||
|
|
|
@ -7,6 +7,8 @@ sources = files('''
|
|||
netdev/bridge.h
|
||||
netdev/dummy.c
|
||||
netdev/dummy.h
|
||||
netdev/ifb.c
|
||||
netdev/ifb.h
|
||||
netdev/ipvlan.c
|
||||
netdev/ipvlan.h
|
||||
netdev/macvlan.c
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+
|
||||
* Copyright © 2019 VMware, Inc. */
|
||||
|
||||
#include "ifb.h"
|
||||
|
||||
const NetDevVTable ifb_vtable = {
|
||||
.object_size = sizeof(IntermediateFunctionalBlock),
|
||||
.sections = NETDEV_COMMON_SECTIONS,
|
||||
.create_type = NETDEV_CREATE_INDEPENDENT,
|
||||
.generate_mac = true,
|
||||
};
|
|
@ -0,0 +1,13 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+
|
||||
* Copyright © 2019 VMware, Inc. */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "netdev.h"
|
||||
|
||||
typedef struct IntermediateFunctionalBlock {
|
||||
NetDev meta;
|
||||
} IntermediateFunctionalBlock;
|
||||
|
||||
DEFINE_NETDEV_CAST(IFB, IntermediateFunctionalBlock);
|
||||
extern const NetDevVTable ifb_vtable;
|
|
@ -12,6 +12,7 @@
|
|||
#include "fd-util.h"
|
||||
#include "fou-tunnel.h"
|
||||
#include "geneve.h"
|
||||
#include "ifb.h"
|
||||
#include "ipvlan.h"
|
||||
#include "l2tp-tunnel.h"
|
||||
#include "list.h"
|
||||
|
@ -73,6 +74,7 @@ const NetDevVTable * const netdev_vtable[_NETDEV_KIND_MAX] = {
|
|||
[NETDEV_KIND_MACSEC] = &macsec_vtable,
|
||||
[NETDEV_KIND_NLMON] = &nlmon_vtable,
|
||||
[NETDEV_KIND_XFRM] = &xfrm_vtable,
|
||||
[NETDEV_KIND_IFB] = &ifb_vtable,
|
||||
};
|
||||
|
||||
static const char* const netdev_kind_table[_NETDEV_KIND_MAX] = {
|
||||
|
@ -109,6 +111,7 @@ static const char* const netdev_kind_table[_NETDEV_KIND_MAX] = {
|
|||
[NETDEV_KIND_MACSEC] = "macsec",
|
||||
[NETDEV_KIND_NLMON] = "nlmon",
|
||||
[NETDEV_KIND_XFRM] = "xfrm",
|
||||
[NETDEV_KIND_IFB] = "ifb",
|
||||
};
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(netdev_kind, NetDevKind);
|
||||
|
|
|
@ -80,6 +80,7 @@ typedef enum NetDevKind {
|
|||
NETDEV_KIND_MACSEC,
|
||||
NETDEV_KIND_NLMON,
|
||||
NETDEV_KIND_XFRM,
|
||||
NETDEV_KIND_IFB,
|
||||
_NETDEV_KIND_MAX,
|
||||
_NETDEV_KIND_TUNNEL, /* Used by config_parse_stacked_netdev() */
|
||||
_NETDEV_KIND_INVALID = -1
|
||||
|
|
|
@ -104,7 +104,7 @@ static int qdisc_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
if (link->route_messages == 0) {
|
||||
if (link->qdisc_messages == 0) {
|
||||
log_link_debug(link, "QDisc configured");
|
||||
link->qdiscs_configured = true;
|
||||
link_check_ready(link);
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[NetDev]
|
||||
Kind=ifb
|
||||
Name=ifb99
|
|
@ -10,6 +10,7 @@ Name=vxcan99
|
|||
Name=vxcan-peer
|
||||
Name=vrf99
|
||||
Name=geneve99
|
||||
Name=ifb99
|
||||
Name=ipiptun99
|
||||
Name=nlmon99
|
||||
Name=xfrm99
|
||||
|
|
|
@ -556,6 +556,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
|
|||
'gretun97',
|
||||
'gretun98',
|
||||
'gretun99',
|
||||
'ifb99',
|
||||
'ip6gretap98',
|
||||
'ip6gretap99',
|
||||
'ip6gretun96',
|
||||
|
@ -633,6 +634,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
|
|||
'25-gre-tunnel-local-any.netdev',
|
||||
'25-gre-tunnel-remote-any.netdev',
|
||||
'25-gre-tunnel.netdev',
|
||||
'25-ifb.netdev',
|
||||
'25-ip6gretap-tunnel-local-any.netdev',
|
||||
'25-ip6gretap-tunnel.netdev',
|
||||
'25-ip6gre-tunnel-any-any.netdev',
|
||||
|
@ -1379,6 +1381,13 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
|
|||
|
||||
self.wait_online(['nlmon99:carrier'])
|
||||
|
||||
@expectedFailureIfModuleIsNotAvailable('ifb')
|
||||
def test_ifb(self):
|
||||
copy_unit_to_networkd_unit_path('25-ifb.netdev', 'netdev-link-local-addressing-yes.network')
|
||||
start_networkd()
|
||||
|
||||
self.wait_online(['ifb99:degraded'])
|
||||
|
||||
class NetworkdL2TPTests(unittest.TestCase, Utilities):
|
||||
|
||||
links =[
|
||||
|
|
Loading…
Reference in New Issue