option domain-search "waw.hackerspace.pl";
option domain-name-servers 10.8.1.2;
default-lease-time 600;
max-lease-time 600;
one-lease-per-client true;

option cisco-ip-phone-tftp code 150 = ip-address;

subnet 10.8.0.0 netmask 255.255.0.0 {

    option routers 10.8.1.2;
    range 10.8.0.20 10.8.0.199;
    authoritative;
    allow bootp;

    if substring (option vendor-class-identifier, 15, 5) = "00000" {
        filename "netboot.xyz.kpxe";
    } else {
        filename "netboot.xyz.efi";
    }

    next-server 10.8.1.2;

    host laser {
        hardware ethernet 00:0e:35:1d:a1:a4;
        fixed-address 10.8.1.18;
    }
    host oki {
        hardware ethernet 00:25:36:de:27:56;
        fixed-address 10.8.1.20;
    }
    host brother {
        hardware ethernet 00:1b:a9:24:96:e2;
        fixed-address 10.8.1.21;
    }
    host zebra {
        hardware ethernet 00:07:4d:4d:71:e4;
        fixed-address 10.8.1.22;
    }
    host lj2100 {
        hardware ethernet 00:30:C1:62:61:23;
        fixed-address 10.8.1.23;
    }
    host dht21 {
        hardware ethernet 5c:cf:7f:06:9a:3e;
        fixed-address 10.8.1.25;
    }
    host ledpanel {
        hardware ethernet 00:0A:35:00:01:22;
        fixed-address 10.8.1.26;
    }
    host bridgeport {
        hardware ethernet 90:1b:0e:1d:23:09;
        fixed-address 10.8.1.29;
    }
    host 3printers1cups {
        hardware ethernet 02:20:f5:20:6a:2d;
        fixed-address 10.8.1.30;
    }

    host telelele {
        hardware ethernet fe:77:d6:83:26:b1;
        fixed-address 10.8.1.31;
    }

    # vending
    host vending {
        #hardware ethernet b8:27:eb:71:e4:0e;
	#hardware ethernet b8:27:eb:3d:ba:fe;
        hardware ethernet b8:27:eb:03:69:01;
        fixed-address 10.8.1.32;
    }

    host transcend {
        hardware ethernet b0:38:29:2e:5d:c9;
        fixed-address 10.8.1.33;
    }

    host welcomer {
        hardware ethernet b8:27:eb:37:9e:6e;
        fixed-address 10.8.1.34;
    }
    
    host arcade {
        hardware ethernet 20:e5:17:0c:31:23;
        fixed-address 10.8.1.35;
    }

    host inventory {
        hardware ethernet 90:e6:ba:84:b6:e0;
        fixed-address 10.8.1.38;
    }

    host camera {
        hardware ethernet 52:54:00:1f:63:1b;
        fixed-address 10.8.1.39;
    }

    # Cisco IP Phone
    host SEPA40CC394DB0C {
        hardware ethernet a4:0c:c3:94:db:0c;
        next-server 10.8.1.2;
	# managed by dfgg/drozdziak
        #option cisco-ip-phone-tftp 10.8.0.190;
        option cisco-ip-phone-tftp 10.8.1.2;
        fixed-address 10.8.1.42;
    }

    # RIPE Atlas Probe
    host ripeatlas {
        hardware ethernet c0:25:e9:99:fb:e8;
        fixed-address 10.8.1.43;
    }
    
    host chromecast {
        hardware ethernet 6c:ad:f8:52:4c:a7;
        fixed-address 10.8.1.47;
    }

    # craptrap VM
    host winbox {
        hardware ethernet 52:54:00:D9:DB:42;
        fixed-address 10.8.1.48;
    }
    
    host staszkecoin {
        hardware ethernet 02:42:24:75:eb:19;
        fixed-address 10.8.1.49;
    }


    host blitzloop {
        hardware ethernet 00:23:14:b0:ec:c8;
        fixed-address 10.8.1.51;
    }

    host tronxy {
        hardware ethernet 00:1f:16:1c:47:df;
        fixed-address 10.8.1.52;
    }

}

# Printer subnet (10.10.7.0/24) has ip-helper 10.8.1.2 set on hs-core01.
# Make DHCP happen.
subnet 10.10.7.0 netmask 255.255.255.0 {
    option routers 10.10.7.1;
    range 10.10.7.100 10.10.7.200;
    authoritative;
    allow bootp;
}

# Listen for relayed requests on the interface from core01
# (even though we're not serving anything there directly)
subnet 172.16.1.0 netmask 255.255.255.250 {
}

subnet 10.10.5.0 netmask 255.255.255.0 {
    option routers 10.10.5.1;
    range 10.10.5.100 10.10.5.200;
    authoritative;
    allow bootp;
    filename "elilo.efi";
    next-server 10.8.1.16;
#    option pxelinux.configfile "elilo.conf"
}
# itanic ilo gnuj
subnet 10.10.1.0 netmask 255.255.255.0 {
    option routers 10.10.1.1;
    range 10.10.1.150 10.10.1.200;
    authoritative;
    next-server 10.8.1.16;
}


