{ # subclass with guard declaration config # options "Dhcp6": { "option-def": [ { "space": "dhcp6", "name": "mysystem", "code": 1250, "type": "string" }, { "space": "dhcp6", "name": "myversion", "code": 1251, "type": "uint16" }, { "space": "dhcp6", "name": "mydescr", "code": 1252, "type": "string" } ], "client-classes": [ # superclass declaration /// match: option dhcp6.mysystem { "name": "foobar", /// from: match if (option dhcp6.myversion) = 0x0001 "test": "option[1251].hex == 0x0001" }, # simple subclass declaration /// subclass selector 'system1' { "name": "sub#foobar#0", /// from: match-if (option dhcp6.myversion) = 0x0001 /// match: option dhcp6.mysystem /// data: 'system1' "test": "(option[1251].hex == 0x0001) and (option[1250].hex == 'system1')" }, # option setting subclass declaration /// subclass selector 'system2' { "name": "sub#foobar#1", "option-data": [ { "space": "dhcp6", "name": "mydescr", "code": 1252, "data": "1.2" } ], /// from: match-if (option dhcp6.myversion) = 0x0001 /// match: option dhcp6.mysystem /// data: 'system2' "test": "(option[1251].hex == 0x0001) and (option[1250].hex == 'system2')" }, # complex subclass declaration /// subclass selector 'system3' { "name": "sub#foobar#2", "option-data": [ { "space": "dhcp6", "name": "mydescr", "code": 1252, "data": "1.3" }, { "space": "dhcp6", "name": "rapid-commit", "code": 14, "data": "" } ], /// from: match-if (option dhcp6.myversion) = 0x0001 /// match: option dhcp6.mysystem /// data: 'system3' "test": "(option[1251].hex == 0x0001) and (option[1250].hex == 'system3')" } ] } }