mirror of
https://github.com/hackacad/bastille.git
synced 2025-12-26 15:30:45 +01:00
Merge pull request #1141 from BastilleBSD/tschettervictor-patch-2
This commit is contained in:
@@ -7,7 +7,8 @@ You can only add an interface once to a jail, with two exceptions.
|
||||
|
||||
1. For classic jails, you can add an interface as many times as you want, but
|
||||
each time with a different IP. All this does is add the IP as another alias
|
||||
on that interface.
|
||||
on that interface. This is the default if no option is given. See help output
|
||||
below.
|
||||
|
||||
2. For VNET jails, if the ``-v|--vlan`` switch is given along with a numerical
|
||||
VLAN ID, Bastille will add the VLAN ID to the jail as a vnetX.X interface,
|
||||
@@ -16,6 +17,8 @@ You can only add an interface once to a jail, with two exceptions.
|
||||
Bridges and VNET interfaces can be added to VNET jails, no matter if they were
|
||||
created with ``-V`` or ``-B``.
|
||||
|
||||
If no option is given, Bastille will assume a standard/classic jail.
|
||||
|
||||
It is possible to passthrough an entire interface from the host to the jail
|
||||
using the ``-P|--passthrough`` option. This will make the interface fully
|
||||
available without the need for additional configuration. It will be available
|
||||
@@ -37,12 +40,11 @@ network TARGET remove INTERFACE`` while both jails are stopped.
|
||||
|
||||
Options:
|
||||
|
||||
-a | --auto Start/stop the jail(s) if required.
|
||||
-B | --bridge Add a bridged VNET interface to an existing jail.
|
||||
-C | --classic Add an interface to a classic (non-VNET) jail.
|
||||
-M | --static-mac Generate a static MAC address for the interface.
|
||||
-a | --auto Start/stop jail(s) if required.
|
||||
-B | --bridge Add a bridge VNET interface.
|
||||
-M | --static-mac Generate a static MAC address for the interface (VNET only).
|
||||
-n | --no-ip Create interface without an IP (VNET only).
|
||||
-P | --passthrough Pass the entire interface through to the jail.
|
||||
-V | --vnet Add a VNET interface to an existing jail.
|
||||
-v | --vlan VLANID Add interface with specified VLAN ID (VNET only).
|
||||
-P | --passthrough Add a raw interface.
|
||||
-V | --vnet Add a VNET interface.
|
||||
-v | --vlan VLANID Assign VLAN ID to interface (VNET only).
|
||||
-x | --debug Enable debug mode.
|
||||
@@ -39,14 +39,13 @@ usage() {
|
||||
|
||||
Options:
|
||||
|
||||
-a | --auto Start/stop the jail(s) if required.
|
||||
-B | --bridge Add a bridged VNET interface to an existing jail.
|
||||
-C | --classic Add an interface to a classic (non-VNET) jail.
|
||||
-M | --static-mac Generate a static MAC address for the interface.
|
||||
-a | --auto Start/stop jail(s) if required.
|
||||
-B | --bridge Add a bridge VNET interface.
|
||||
-M | --static-mac Generate a static MAC address for the interface (VNET only).
|
||||
-n | --no-ip Create interface without an IP (VNET only).
|
||||
-P | --passthrough Pass the entire interface through to the jail.
|
||||
-V | --vnet Add a VNET interface to an existing jail.
|
||||
-v | --vlan VLANID Add interface with specified VLAN ID (VNET only).
|
||||
-P | --passthrough Add a raw interface.
|
||||
-V | --vnet Add a VNET interface.
|
||||
-v | --vlan VLANID Assign VLAN ID to interface (VNET only).
|
||||
-x | --debug Enable debug mode.
|
||||
|
||||
EOF
|
||||
@@ -56,8 +55,8 @@ EOF
|
||||
# Handle options.
|
||||
AUTO=0
|
||||
BRIDGE=0
|
||||
CLASSIC=0
|
||||
STATIC_MAC=0
|
||||
STANDARD=0
|
||||
PASSTHROUGH=0
|
||||
VNET=0
|
||||
VLAN_ID=""
|
||||
@@ -75,10 +74,6 @@ while [ "$#" -gt 0 ]; do
|
||||
BRIDGE=1
|
||||
shift
|
||||
;;
|
||||
-C|--classic)
|
||||
CLASSIC=1
|
||||
shift
|
||||
;;
|
||||
-M|--static-mac)
|
||||
STATIC_MAC=1
|
||||
shift
|
||||
@@ -112,7 +107,6 @@ while [ "$#" -gt 0 ]; do
|
||||
case ${_o} in
|
||||
a) AUTO=1 ;;
|
||||
B) BRIDGE=1 ;;
|
||||
C) CLASSIC=1 ;;
|
||||
M) STATIC_MAC=1 ;;
|
||||
n) NO_IP=1 ;;
|
||||
P) PASSTHROUGH=1 ;;
|
||||
@@ -140,16 +134,19 @@ else
|
||||
IP=""
|
||||
fi
|
||||
|
||||
# Default is standard interface
|
||||
if [ "${VNET}" -eq 0 ] && [ "${BRIDGE}" -eq 0 ] && [ "${PASSTHROUGH}" -eq 0 ]; then
|
||||
STANDARD=1
|
||||
fi
|
||||
|
||||
if [ "${ACTION}" = "add" ]; then
|
||||
if { [ "${VNET}" -eq 1 ] && [ "${BRIDGE}" -eq 1 ]; } || \
|
||||
{ [ "${VNET}" -eq 1 ] && [ "${CLASSIC}" -eq 1 ]; } || \
|
||||
{ [ "${VNET}" -eq 1 ] && [ "${STANDARD}" -eq 1 ]; } || \
|
||||
{ [ "${VNET}" -eq 1 ] && [ "${PASSTHROUGH}" -eq 1 ]; } || \
|
||||
{ [ "${BRIDGE}" -eq 1 ] && [ "${CLASSIC}" -eq 1 ]; } || \
|
||||
{ [ "${BRIDGE}" -eq 1 ] && [ "${STANDARD}" -eq 1 ]; } || \
|
||||
{ [ "${BRIDGE}" -eq 1 ] && [ "${PASSTHROUGH}" -eq 1 ]; } || \
|
||||
{ [ "${CLASSIC}" -eq 1 ] && [ "${PASSTHROUGH}" -eq 1 ]; } then
|
||||
error_exit "[ERROR]: Only one of [-B|--bridge], [-C|--classic], [-P|--passthrough] or [-V|--vnet] should be set."
|
||||
elif [ "${VNET}" -eq 0 ] && [ "${BRIDGE}" -eq 0 ] && [ "${CLASSIC}" -eq 0 ] && [ "${PASSTHROUGH}" -eq 0 ]; then
|
||||
error_exit "[ERROR]: [-B|--bridge], [-C|--classic], [-P|--passthrough] or [-V|--vnet] must be set."
|
||||
{ [ "${STANDARD}" -eq 1 ] && [ "${PASSTHROUGH}" -eq 1 ]; } then
|
||||
error_exit "[ERROR]: Only one of [-B|--bridge], [-P|--passthrough] or [-V|--vnet] should be set."
|
||||
elif [ "${VNET}" -eq 0 ] && [ "${BRIDGE}" -eq 0 ] && [ "${PASSTHROUGH}" -eq 0 ] && [ -n "${VLAN_ID}" ]; then
|
||||
error_exit "[ERROR]: VLANs can only be used with VNET interfaces."
|
||||
elif [ "${VNET}" -eq 0 ] && [ "${BRIDGE}" -eq 0 ] && [ "${NO_IP}" -eq 1 ]; then
|
||||
@@ -455,7 +452,7 @@ EOF
|
||||
fi
|
||||
echo "Added Passthrough interface: \"${_if}\""
|
||||
|
||||
elif [ "${CLASSIC}" -eq 1 ]; then
|
||||
elif [ "${STANDARD}" -eq 1 ]; then
|
||||
if [ -n "${IP6_ADDR}" ]; then
|
||||
sed -i '' "s/interface = .*/&\n ip6.addr += ${_if}|${_ip};/" ${_jail_config}
|
||||
else
|
||||
@@ -674,7 +671,7 @@ case "${ACTION}" in
|
||||
if [ "${AUTO}" -eq 1 ]; then
|
||||
bastille start "${TARGET}"
|
||||
fi
|
||||
elif [ "${CLASSIC}" -eq 1 ]; then
|
||||
elif [ "${STANDARD}" -eq 1 ]; then
|
||||
if [ "$(bastille config ${TARGET} get vnet)" != "not set" ]; then
|
||||
error_exit "[ERROR]: ${TARGET} is a VNET jail."
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user