# Semana 7: los problemas de BGP y la estructura de Internet. Se usa dentro del
# contenedor del curso.
#
#   make              compila rov
#   make test         compila, levanta las dos topologías una tras otra y corre las
#                     pruebas (test_*.py); siempre destruye lo que levantó. La prueba
#                     de los filtros usa lab/ y se salta hasta que la completen
#   make up           levanta los seis AS con el atacante (bgp/bgp.clab.yml)
#   make up-ixp       levanta los tres ISP con el IXP (ixp/ixp.clab.yml)
#   make down         destruye las dos topologías y sus redes de Docker
#   make clean        lo anterior, y borra los binarios

CC = gcc
CFLAGS = -Wall -Wextra -std=c17 -D_DEFAULT_SOURCE -O2 -g

.PHONY: all test up up-ixp down clean

all: rov

rov: rov.c
	$(CC) $(CFLAGS) -o $@ $<

test: all
	@status=0; PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -p 'test_*.py' -v || status=$$?; \
	  $(MAKE) --no-print-directory down; exit $$status

up:
	cd bgp && containerlab deploy -t bgp.clab.yml --reconfigure

up-ixp:
	cd ixp && containerlab deploy -t ixp.clab.yml --reconfigure

down:
	@cd bgp && containerlab destroy -t bgp.clab.yml --cleanup >/dev/null 2>&1 || true
	@cd ixp && containerlab destroy -t ixp.clab.yml --cleanup >/dev/null 2>&1 || true
	@docker network rm redes-w07-bgp >/dev/null 2>&1 || true
	@docker network rm redes-w07-ixp >/dev/null 2>&1 || true

clean: down
	rm -f rov
	rm -rf __pycache__ bgp/clab-w07-bgp ixp/clab-w07-ixp
