mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-07-26 13:16:03 +00:00
commit
1e2eb3f4e6
@ -325,16 +325,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|||||||
<option>lxc.network.macvlan.mode</option> specifies the
|
<option>lxc.network.macvlan.mode</option> specifies the
|
||||||
mode the macvlan will use to communicate between
|
mode the macvlan will use to communicate between
|
||||||
different macvlan on the same upper device. The accepted
|
different macvlan on the same upper device. The accepted
|
||||||
modes are <option>private</option>, the device never
|
modes are <option>private</option>, <option>vepa</option>,
|
||||||
communicates with any other device on the same upper_dev (default),
|
<option>bridge</option> and <option>passthru</option>.
|
||||||
<option>vepa</option>, the new Virtual Ethernet Port
|
In <option>private</option> mode, the device never
|
||||||
|
communicates with any other device on the same upper_dev (default).
|
||||||
|
In <option>vepa</option> mode, the new Virtual Ethernet Port
|
||||||
Aggregator (VEPA) mode, it assumes that the adjacent
|
Aggregator (VEPA) mode, it assumes that the adjacent
|
||||||
bridge returns all frames where both source and
|
bridge returns all frames where both source and
|
||||||
destination are local to the macvlan port, i.e. the
|
destination are local to the macvlan port, i.e. the
|
||||||
bridge is set up as a reflective relay. Broadcast
|
bridge is set up as a reflective relay. Broadcast
|
||||||
frames coming in from the upper_dev get flooded to all
|
frames coming in from the upper_dev get flooded to all
|
||||||
macvlan interfaces in VEPA mode, local frames are not
|
macvlan interfaces in VEPA mode, local frames are not
|
||||||
delivered locally, or <option>bridge</option>, it
|
delivered locally. In <option>bridge</option> mode, it
|
||||||
provides the behavior of a simple bridge between
|
provides the behavior of a simple bridge between
|
||||||
different macvlan interfaces on the same port. Frames
|
different macvlan interfaces on the same port. Frames
|
||||||
from one interface to another one get delivered directly
|
from one interface to another one get delivered directly
|
||||||
@ -343,7 +345,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|||||||
interface, but when they come back from a reflective
|
interface, but when they come back from a reflective
|
||||||
relay, we don't deliver them again. Since we know all
|
relay, we don't deliver them again. Since we know all
|
||||||
the MAC addresses, the macvlan bridge mode does not
|
the MAC addresses, the macvlan bridge mode does not
|
||||||
require learning or STP like the bridge module does.
|
require learning or STP like the bridge module does. In
|
||||||
|
<option>passthru</option> mode, all frames received by
|
||||||
|
the physical interface are forwarded to the macvlan
|
||||||
|
interface. Only one macvlan interface in <option>passthru</option>
|
||||||
|
mode is possible for one physical interface.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -100,7 +100,7 @@ struct ifla_vlan {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ifla_macvlan {
|
struct ifla_macvlan {
|
||||||
int mode; /* private, vepa, bridge */
|
int mode; /* private, vepa, bridge, passthru */
|
||||||
};
|
};
|
||||||
|
|
||||||
union netdev_p {
|
union netdev_p {
|
||||||
|
@ -518,6 +518,10 @@ static int network_ifname(char **valuep, const char *value)
|
|||||||
# define MACVLAN_MODE_BRIDGE 4
|
# define MACVLAN_MODE_BRIDGE 4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MACVLAN_MODE_PASSTHRU
|
||||||
|
# define MACVLAN_MODE_PASSTHRU 8
|
||||||
|
#endif
|
||||||
|
|
||||||
static int macvlan_mode(int *valuep, const char *value)
|
static int macvlan_mode(int *valuep, const char *value)
|
||||||
{
|
{
|
||||||
struct mc_mode {
|
struct mc_mode {
|
||||||
@ -527,6 +531,7 @@ static int macvlan_mode(int *valuep, const char *value)
|
|||||||
{ "private", MACVLAN_MODE_PRIVATE },
|
{ "private", MACVLAN_MODE_PRIVATE },
|
||||||
{ "vepa", MACVLAN_MODE_VEPA },
|
{ "vepa", MACVLAN_MODE_VEPA },
|
||||||
{ "bridge", MACVLAN_MODE_BRIDGE },
|
{ "bridge", MACVLAN_MODE_BRIDGE },
|
||||||
|
{ "passthru", MACVLAN_MODE_PASSTHRU },
|
||||||
};
|
};
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
@ -2289,6 +2294,7 @@ static int lxc_get_item_nic(struct lxc_conf *c, char *retv, int inlen,
|
|||||||
case MACVLAN_MODE_PRIVATE: mode = "private"; break;
|
case MACVLAN_MODE_PRIVATE: mode = "private"; break;
|
||||||
case MACVLAN_MODE_VEPA: mode = "vepa"; break;
|
case MACVLAN_MODE_VEPA: mode = "vepa"; break;
|
||||||
case MACVLAN_MODE_BRIDGE: mode = "bridge"; break;
|
case MACVLAN_MODE_BRIDGE: mode = "bridge"; break;
|
||||||
|
case MACVLAN_MODE_PASSTHRU: mode = "passthru"; break;
|
||||||
default: mode = "(invalid)"; break;
|
default: mode = "(invalid)"; break;
|
||||||
}
|
}
|
||||||
strprint(retv, inlen, "%s", mode);
|
strprint(retv, inlen, "%s", mode);
|
||||||
|
Loading…
Reference in New Issue
Block a user