Current implementation allows for cloning jails that were created using a static MAC.
Also removed some unnecessary sed strings. These were simplified.
This commit will generate a static MAC address for each jail, based on the name of the jail. It will use the first half (xx:xx:xx) of the host MAC to avoid network clashes, and generate a random HEX string from the hashed name of the jail. It will then add that random 5 character HEX string in MAC format, and add an "a" and "b" for the host and jail respectively.
This way a jail can retain it's MAC ID even if it is deleted and reinstalled, as long as the same name is retained.
When a VNET jail has more than IP address configured on its primary interface, invoking "bastille list -a" will now display all addresses vertically aligned.
Hierarchical jails inherit the parent jail's permissions and don't support setting devfs_ruleset to a non-zero value. This update adds a check to determine if the script is running inside a jail. If so, it sets devfs_ruleset to 0 to comply with this constraint.
With
```sh
bastille_enable="YES"
bastille_rcorder="YES"
```
in `/etc/rc.conf`, the script will the script will start all jails, except jails
with "KEYWORD: nostart" in jail.conf.
Example of `jail.conf` with `KEYWORD: nostart`:
```
jailname {
...
}
```
`PROVIDE:` is optional. Actually all `rcorder(8)` labels are optional, but we
can use it to build jail dependencies. For instance, if we have jail `db` and
jails `alfa` and `zeta`, we can configure it so both jails require jail `db`:
`alfa/jail.conf`:
```
alfa {
...
}
```
`zeta/jail.conf`:
```
zeta {
...
}
```
`db/jail.conf`:
```
db {
...
}
```
With this configuration jail `db` will start first and stop last.
Accross the code, release names are checked against some variation of
-BETAx / -RCx which are inconsistent in the range of accepted values for
`x`.
As a consequence, some commands cannot be successfuly run while they
are valid, e.g. `bastille create test 14.0-RC4 10.0.0.2` is rejected
because only `*-RC1` and `*-RC2` are accepted as a RC release name.
Find out these lists of specific BETA and RC patterns and adjust them to
allow any one-digit value at the end. We generaly do up to 4 BETA / RC
releases, so a one digit limit is probably enough for the time being.
Removed -q from kldstat in function configure_zfs().
on FreeBSD 14 (maybe earlier) this causes kldstat to return in such
a way that BastilleBSD assumes zfs is not loaded.