<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Perhaps the question was poorly framed, and/or a poor example was provided.  I’ll reframe the question and provide an example from my PoC.</div><div class=""><br class=""></div><div class="">Assume I have a many relays, and behind each of those relays are multiple clients that present one of many different option 60 values.</div><div class=""><br class=""></div><div class="">What methods can I use to advertise the correct boot-file-name to the correct vendor class?  In ISC DHCPD, I did this by creating a class, matching options and setting the filename.  i.e.:</div><div class=""><br class=""></div><div class=""><div class="">shared-network RGW02_LAB-RESI_MANAGEMENT {</div><div class="">  class "RGW02_LAB_ZNID-GE-2628A" {</div><div class="">    match if (substring(option vendor-class-identifier, 0, 13) = "ZNID-GE-2628A") and</div><div class="">    substring(option agent.remote-id,2,9) = "rgw02.lab";</div><div class="">    filename "26xx_current/S0300608";</div><div class="">  }</div></div><div class=""><br class=""></div><div class="">I’d like to assume that in Kea I can create a client-class and reference that class within each subnet, but my attempt (below) throws errors on reload, so I’m not sure how to implement it.  Some sort of “if” matching somewhere?  Do I need to be more granular with the creation of the client-classes (i.e.: test for the agent id AND the vendor class and then set boot file)?  The thought of the creation of many, many, extremely granular client-classes that match agent id and vendor class was what stemmed the original question about templates.</div><div class=""><br class=""></div><div class="">{</div><blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px;" class=""><div class="">"Dhcp4": {</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>"client-classes": [</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">   </span>{</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>       "name": "rgw01.lab",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>       "test": "substring(relay4[2].hex,2,9) == 'rgw01.lab'"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>},</div><div class=""><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>{</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>       "name": "rgw02.lab",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>       "test": "substring(relay4[2].hex,2,9) == 'rgw02.lab'"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>},</div><div class=""></div></div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>{</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">               </span>"name": "VENDOR_CLASS_ZNID-GE-2628A-00-0GN",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">                </span>"boot-file-name": “file1"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>},</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>{</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">               </span>"name": "ZNID-GE-2628A-00-0GN",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">             </span>"test" : "option[60].hex == 'ZNID-GE-2628A-00-0GN'",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">                </span>"boot-file-name": “file2"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>},</div><div class=""><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>{</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">               </span>"name": "VENDOR_CLASS_ZNID-GE-2624A-00-0GN",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">                </span>"boot-file-name": “file3"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>},</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>{</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">               </span>"name": "ZNID-GE-2628A-00-0GN",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">             </span>"test" : "option[60].hex == 'ZNID-GE-2624A-00-0GN'",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">                </span>"boot-file-name": “file4"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>}</div></div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>],</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>"subnet4": [</div><div class="">         {</div><div class="">        <span class="Apple-tab-span" style="white-space: pre;">    </span>"client-class" : "rgw01.lab",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>        "subnet": "10.63.255.0/24",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>        "valid-lifetime": 60,</div><div class="">        <span class="Apple-tab-span" style="white-space: pre;">       </span>"option-data": [</div><div class=""><span class="Apple-tab-span" style="white-space:pre">                        </span>“client-class”: "VENDOR_CLASS_ZNID-GE-2628A-00-0GN”,</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">                 </span>“client-class”: "VENDOR_CLASS_ZNID-GE-2624A-00-0GN”,</div><div class=""><span class="Apple-tab-span" style="white-space: pre;"> </span>                {</div><div class="">        <span class="Apple-tab-span" style="white-space: pre;"> </span>                "name": "tftp-server-name",</div><div class="">                <span class="Apple-tab-span" style="white-space: pre;">       </span>        "data": "10.63.255.1"</div><div class="">                <span class="Apple-tab-span" style="white-space: pre;"> </span>},</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>                {</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>                        "name": "classless-static-routes",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;"> </span>                        "data": "180A20000A3FFF01180A200B0A3FFF01"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;"> </span>                }</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>        ],</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">             </span>"pools": [</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>                {</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>                        "pool": "10.63.255.2 - 10.63.255.254"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>                }</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>        ],</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>        "reservations": [</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>                {</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>                        "flex-id": "010972677730312e6c616200040c370201",</div><div class="">        <span class="Apple-tab-span" style="white-space: pre;">  </span>                "ip-address": "10.63.255.69",</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>                        "boot-file-name": “file3"</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>                }</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>        ],</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>},</div><div class="">         {<br class="">        <span class="Apple-tab-span" style="white-space: pre;">     </span>"client-class" : "rgw02.lab",<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>        "subnet": "10.63.254.0/24",<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>        "valid-lifetime": 60,<br class="">        <span class="Apple-tab-span" style="white-space: pre;">    </span>"option-data": [</div><div class=""><div class=""><span class="Apple-tab-span" style="white-space: pre;">                        </span>“client-class”: "VENDOR_CLASS_ZNID-GE-2628A-00-0GN”,</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">                 </span>“client-class”: "VENDOR_CLASS_ZNID-GE-2624A-00-0GN”,</div><span class="Apple-tab-span" style="white-space: pre;">       </span>                {<br class="">        <span class="Apple-tab-span" style="white-space: pre;">      </span>                "name": "tftp-server-name",<br class="">                <span class="Apple-tab-span" style="white-space: pre;">    </span>        "data": "10.63.254.1"<br class="">                <span class="Apple-tab-span" style="white-space: pre;">      </span>},<br class=""><span class="Apple-tab-span" style="white-space: pre;">   </span>                {<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>                        "name": "classless-static-routes",<br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>                        "data": "180A20000A3FFF01180A200B0A3FFF01"<br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>                }<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>        ],<br class=""><span class="Apple-tab-span" style="white-space: pre;">          </span>"pools": [<br class=""><span class="Apple-tab-span" style="white-space: pre;"> </span>                {<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>                        "pool": "10.63.254.2 - 10.63.254.254"<br class=""><span class="Apple-tab-span" style="white-space: pre;">   </span>                }<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>        ],<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>        "reservations": [<br class=""><span class="Apple-tab-span" style="white-space: pre;"> </span>                {<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>                        "flex-id": "010972677730312e6c616200040c370201",<br class="">        <span class="Apple-tab-span" style="white-space: pre;">       </span>                "ip-address": "10.63.254.69",<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>                        "boot-file-name": “file3"<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>                }<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>        ],<br class=""><div class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>}</div><div class=""></div></div></blockquote><div class=""><div class=""><span class="Apple-tab-span" style="white-space: pre;">                </span>]</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>}</div><div class="">}</div></div><div class=""><br class=""></div><div class="">Also, and somewhat of an aside, can I edit the "VENDOR_CLASS_" class that is created by default and insert boot-file-name there, or do I need to create a different class and match the option 60 specifically?</div><br class=""><div><blockquote type="cite" class=""><div class="">On Sep 14, 2017, at 7:38 AM, Francis Dupont <<a href="mailto:fdupont@isc.org" class="">fdupont@isc.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Does it not enough to define it globally?<br class=""><br class="">Regards<br class=""><br class="">Francis Dupont <<a href="mailto:fdupont@isc.org" class="">fdupont@isc.org</a>><br class=""></div></div></blockquote></div><br class=""></body></html>