<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Comic Sans MS";
        panose-1:3 15 7 2 3 3 2 2 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Comic Sans MS";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Comic Sans MS";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="Section1">
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">Thanks for the feedback Peter.  I had already tried inserting more parentheses – to no avail – same results.  After simplifying the logic a bit and upon closer inspection, this appears to
 be an issue on the Client Side.  These older settop boxes appear to have a “munged” DHCP discover message, which prevents the ISC Server from parsing through the Vendor Options.  Here’s what I’m running with now. 
<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">Keith<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">class "pre30eCM"  {<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">     match if not (option vendor-class-identifier = "docsis3.0:")<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">     and option SA.esafetype = "ECM:ESTB";<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New""> }<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New""># Note: Legacy DOCSIS 1.0 STBs appear to have a munged DHCP Discover message<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">#       which will preclude the ISC DHCP Server from parsing through the<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">#       vendor options.  This requires configuring a catch-all pool.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">class "30CM"  {<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">     match if option vendor-class-identifier = "docsis3.0:"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">     and not (option SA.esafetype = "ECM:ESTB");<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">-----Original Message-----<br>
From: dhcp-users-bounces+perryk=cisco.com@lists.isc.org [mailto:dhcp-users-bounces+perryk=cisco.com@lists.isc.org] On Behalf Of Peter Rathlev<br>
Sent: Friday, July 19, 2013 3:57 AM<br>
To: Users of ISC DHCP<br>
Subject: Re: Vendor Class ID - Option 43 Parsing Issue<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">On Wed, 2013-07-17 at 21:25 +0000, Keith Perry (perryk) wrote:<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">> class "pre30eCM"  {<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">>   match if (option vendor-class-identifier = "docsis 1.0"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">>   or option vendor-class-identifier = "docsis1.0")<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">>   or substring (option vendor-class-identifier, 0, 10) = "docsis1.1:"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">>   or substring (option vendor-class-identifier, 0, 10) = "docsis2.0:"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">>   and option SA.devtype = "ECM";                         
<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">> }<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">...<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">> class "pre30CM"  {<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">>   match if option vendor-class-identifier = "docsis 1.0"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">>   or substring (option vendor-class-identifier, 0, 10) = "docsis1.1:"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">>   or substring (option vendor-class-identifier, 0, 10) = "docsis2.0:"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">>   and not (option SA.devtype = "ECM");<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">> }<o:p></o:p></span></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">Wouldn't it be prudent to insert some more parentheses? I'm not 100% certain how dhcpd treats operator precedence but parens would remove any<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">confusion. Normally logical AND has higher precedence that logical OR which means that the 'SA.devtype = "ECM"' only counts for "docsis2.0:"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">modems.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">The request you're showing that doesn't fall into the right group thus matches both "pre30eCM" and "pre30CM". If your problem is that it falls<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">into "pre30CM" where it should fall into "pre30eCM" then the parentheses might solve you problem.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">-- <o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Arial","sans-serif"">Peter<o:p></o:p></span></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">_______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">dhcp-users mailing list<o:p></o:p></p>
<p class="MsoPlainText">dhcp-users@lists.isc.org<o:p></o:p></p>
<p class="MsoPlainText">https://lists.isc.org/mailman/listinfo/dhcp-users<o:p></o:p></p>
</div>
</body>
</html>