# Makefile over Omicron's how to run doc:
# https://github.com/oxidecomputer/omicron/blob/main/docs/how-to-run.adoc

.PHONY: fake-network unfake-network install-reqs activate create-hardware \
        destroy-hardware pkg install uninstall setup1 setup2 cleanup1 cleanup2

fake-network:
    @pfexec dladm create-etherstub -t fake_external_stub0
    @pfexec dladm create-vnic -t -l fake_external_stub0 fake_external0
    @pfexec ipadm create-if -t fake_external0
    @pfexec ipadm create-addr -t -T static --address 192.168.1.199 fake_external0/external
    @echo "map igb0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto" > /tmp/ipnat.conf
    @echo "map igb0 192.168.1.0/24 -> 0/32" >> /tmp/ipnat.conf
    @pfexec cp /tmp/ipnat.conf /etc/ipf/ipnat.conf
    @pfexec routeadm -e ipv4-forwarding -u
    @svcadm enable ipfilter

unfake-network:
    @svcadm enable ipfilter
    @pfexec routeadm -d ipv4-forwarding -u
    @pfexec rm -f /etc/ipf/ipnat.conf
    @pfexec ipadm delete-addr fake_external0/external
    @pfexec ipadm delete-if fake_external0
    @pfexec dladm delete-vnic fake_external0
    @pfexec dladm delete-etherstub fake_external_stub0

create-hardware1:
    @cargo xtask virtual-hardware --vdev-dir /oxide/workspace/scratch create --gateway-ip 168.126.248.254 --pxa-start 168.126.248.22 --pxa-end 168.126.248.40 --physical-link igb0

create-hardware2:
    @cargo xtask virtual-hardware --vdev-dir /oxide/workspace/scratch create --gateway-ip 192.168.1.199 --pxa-start 192.168.1.20 --pxa-end 192.168.1.40 --physical-link fake_external_stub0

install-reqs:
    @./tools/install_prerequisites.sh

#@cargo run --release --bin omicron-package -- -t default target create -i standard -m non-gimlet -s softnpu -r single-sled
activate:
    @cargo run --release --bin omicron-package -- -t default target create -p dev

destroy-hardware:
    @yes | cargo xtask virtual-hardware destroy

pkg:
    @cargo run --release --bin omicron-package -- package

install:
    @cargo build --release --bin omicron-package
    @pfexec ./target/release/omicron-package install

uninstall:
    @pfexec ./target/release/omicron-package uninstall

setup1: create-hardware1 activate pkg install

setup2: fake-network create-hardware2 activate pkg install

cleanup1: uninstall destroy-hardware

cleanup2: uninstall destroy-hardware unfake-network

Generated by Zeeshan Lakhani using scpaste at Thu Jul 31 15:31:46 2025. KST. (original)