.PHONY: up down install service_up service_down test autoconfig clean help # Default target help: @echo "Available targets:" @echo " up - Start DHCP server in userland mode" @echo " down - Stop DHCP server" @echo " install - Install as systemd service (requires sudo)" @echo " service_up - Enable and start systemd service" @echo " service_down - Disable and stop systemd service" @echo " test - Run test environment with virtual network (172.20.0.0/24)" @echo " test-clean - Clean up test environment" @echo " autoconfig - Auto-generate configuration from current network" @echo " clean - Remove all containers and generated files" # Start DHCP server in userland mode up: @echo "Building DHCP server image..." @docker-compose build @echo "Starting DHCP server..." @docker-compose up -d @echo "DHCP server started. Check logs with: docker-compose logs -f" # Stop DHCP server down: @echo "Stopping DHCP server..." @docker-compose down @echo "DHCP server stopped." # Install as systemd service (requires sudo) install: @echo "Installing systemd service..." @bash scripts/install-service.sh @echo "Service installed. Use 'make service_up' to start." # Enable and start systemd service service_up: @echo "Enabling and starting systemd service..." @systemctl --user enable dhcp-whitelist.service 2>/dev/null || sudo systemctl enable dhcp-whitelist.service @systemctl --user start dhcp-whitelist.service 2>/dev/null || sudo systemctl start dhcp-whitelist.service @echo "Service started. Check status with: systemctl status dhcp-whitelist" # Disable and stop systemd service service_down: @echo "Stopping and disabling systemd service..." @systemctl --user stop dhcp-whitelist.service 2>/dev/null || sudo systemctl stop dhcp-whitelist.service @systemctl --user disable dhcp-whitelist.service 2>/dev/null || sudo systemctl disable dhcp-whitelist.service @echo "Service stopped." # Run test environment test: @echo "Building test environment..." @docker-compose -f docker-compose.test.yml build @echo "Running tests..." @docker-compose -f docker-compose.test.yml up --abort-on-container-exit @$(MAKE) test-clean @echo "Tests completed." # Clean up test environment (always runs, even on test failure) test-clean: @echo "Cleaning up test environment..." @docker-compose -f docker-compose.test.yml down -v --remove-orphans 2>/dev/null || true @docker network rm service-dhcp-direct-link-only_test-net 2>/dev/null || true @echo "Test cleanup complete." # Auto-generate configuration autoconfig: @echo "Auto-generating configuration..." @bash scripts/autoconfig.sh @echo "Configuration generated. Review config/ directory before starting." # Clean up clean: @echo "Cleaning up..." @docker-compose down 2>/dev/null || true @$(MAKE) test-clean @rm -f config/*.tmp @echo "Cleanup complete."