a | b | |
---|
| 0 | + | # REQUIRE: netif |
---|
| 0 | + | # PROVIDE: netgraph |
---|
| 0 | + | # BEFORE: routing |
---|
| 0 | + | |
---|
| 0 | + | . /etc/rc.subr |
---|
| 0 | + | |
---|
| 0 | + | name="netgraph" |
---|
| 0 | + | start_cmd="${name}_start" |
---|
| 0 | + | stop_cmd="${name}_stop" |
---|
| 0 | + | HOST_IP="XXX::11/64" |
---|
| 0 | + | ETHER_IF="ixl2" |
---|
| 0 | + | |
---|
| 0 | + | netgraph_start() { |
---|
| 0 | + | # Ensure the kernel modules are loaded |
---|
| 0 | + | kldload ng_bridge ng_eiface ng_ether |
---|
| 0 | + | |
---|
| 0 | + | # Create the graph |
---|
| 0 | + | ngctl -f- <<EOF |
---|
| 0 | + | mkpeer ${ETHER_IF}: vlan lower downstream |
---|
| 0 | + | name ${ETHER_IF}:lower vlan0 |
---|
| 0 | + | mkpeer vlan0: bridge 204 link0 |
---|
| 0 | + | mkpeer vlan0: bridge nomatch link0 |
---|
| 0 | + | msg vlan0: addfilter { vid=204 hook="204" } |
---|
| 0 | + | name vlan0:204 wg |
---|
| 0 | + | name vlan0:nomatch public |
---|
| 0 | + | msg ixl2: setpromisc 1 |
---|
| 0 | + | msg ixl2: setautosrc 0 |
---|
| 0 | + | EOF |
---|
| 0 | + | |
---|
| 0 | + | ngctl mkpeer public: eiface link2 ether |
---|
| 0 | + | ifconfig ngeth0 inet6 ${HOST_IP} auto_linklocal up |
---|
| 0 | + | ifconfig ngeth0 media 10Gbase-T mediaopt full-duplex |
---|
| 0 | + | |
---|
| 0 | + | |
---|
| 0 | + | |
---|
| 0 | + | } |
---|
| 0 | + | |
---|
| 0 | + | netgraph_stop() { |
---|
| 0 | + | ngctl shutdown vlan0: |
---|
| 0 | + | ngctl shutdown wg: |
---|
| 0 | + | ngctl shutdown public: |
---|
| 0 | + | } |
---|
| 0 | + | |
---|
| 0 | + | load_rc_config $name |
---|
| 0 | + | run_rc_command "$1" |
---|
... | |
---|