<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 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 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:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></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="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">I can’t figure out how to get modules to return with the codes I want them too.  I have (what I believe to be) a very simple policy for checking if a request looks like a MAC authentication request.  I would like the policy module return
 to be able to indicate if the request looks like it’s MAC authentication or not.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have a policy defined in policy.conf as follows:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">check.mac_authentication {<o:p></o:p></p>
<p class="MsoNormal">                                if ( (Calling-Station-Id) && (User-Name) ) {<o:p></o:p></p>
<p class="MsoNormal">                                                                if ( "%{User-Name}" =~ /^%{config:policy.mac-addr}$/i ) {<o:p></o:p></p>
<p class="MsoNormal">                                                                                                update request {<o:p></o:p></p>
<p class="MsoNormal">                                                                                                                                Tmp-String-0 := "%{tolower:%{1}%{2}%{3}%{4}%{5}%{6}}"<o:p></o:p></p>
<p class="MsoNormal">                                                                                                }<o:p></o:p></p>
<p class="MsoNormal">                                                                }<o:p></o:p></p>
<p class="MsoNormal">                                                                if ( "%{Calling-Station-Id}" =~ /^%{config:policy.mac-addr}$/i ) {<o:p></o:p></p>
<p class="MsoNormal">                                                                                                update request {<o:p></o:p></p>
<p class="MsoNormal">                                                                                                                                Tmp-String-1 := "%{tolower:%{1}%{2}%{3}%{4}%{5}%{6}}"<o:p></o:p></p>
<p class="MsoNormal">                                                                                                }<o:p></o:p></p>
<p class="MsoNormal">                                                                }<o:p></o:p></p>
<p class="MsoNormal">                                }<o:p></o:p></p>
<p class="MsoNormal">                                if ( (Tmp-String-0) && (Tmp-String-1) &&  "%{Tmp-String-0}" == "%{Tmp-String-1}" ) {<o:p></o:p></p>
<p class="MsoNormal">                                                                ok<o:p></o:p></p>
<p class="MsoNormal">                                }<o:p></o:p></p>
<p class="MsoNormal">                                else {<o:p></o:p></p>
<p class="MsoNormal">                                                                noop<o:p></o:p></p>
<p class="MsoNormal">                                }<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The goal is to return “ok” if both attributes exist, look like mac addresses, and have the same value (after being normalized to lower-case and having delimiters removed).  Otherwise, it should return “noop”.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">What is happening instead:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+++- entering policy check.mac_authentication {...}<o:p></o:p></p>
<p class="MsoNormal">++++? if ((Calling-Station-Id) && (User-Name) )<o:p></o:p></p>
<p class="MsoNormal">?? Evaluating (Calling-Station-Id) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">?? Evaluating (User-Name) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">++++? if ((Calling-Station-Id) && (User-Name) ) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">++++- entering if ((Calling-Station-Id) && (User-Name) ) {...}<o:p></o:p></p>
<p class="MsoNormal">+++++? if ("%{User-Name}" =~ /^%{config:policy.mac-addr}$/i )<o:p></o:p></p>
<p class="MsoNormal">        expand: %{User-Name} -> 11bbccddeeff<o:p></o:p></p>
<p class="MsoNormal">        expand: policy.mac-addr -> policy.mac-addr<o:p></o:p></p>
<p class="MsoNormal">        expand: ^%{config:policy.mac-addr}$ -> ^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})$<o:p></o:p></p>
<p class="MsoNormal">? Evaluating ("%{User-Name}" =~ /^%{config:policy.mac-addr}$/i) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">+++++? if ("%{User-Name}" =~ /^%{config:policy.mac-addr}$/i ) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">+++++- entering if ("%{User-Name}" =~ /^%{config:policy.mac-addr}$/i ) {...}<o:p></o:p></p>
<p class="MsoNormal">        expand: %{1}%{2}%{3}%{4}%{5}%{6} -> 11bbccddeeff<o:p></o:p></p>
<p class="MsoNormal">        expand: %{tolower:%{1}%{2}%{3}%{4}%{5}%{6}} -> 11bbccddeeff<o:p></o:p></p>
<p class="MsoNormal">++++++[request] returns ok<o:p></o:p></p>
<p class="MsoNormal">+++++- if ("%{User-Name}" =~ /^%{config:policy.mac-addr}$/i ) returns ok<o:p></o:p></p>
<p class="MsoNormal">+++++? if ("%{Calling-Station-Id}" =~ /^%{config:policy.mac-addr}$/i )<o:p></o:p></p>
<p class="MsoNormal">        expand: %{Calling-Station-Id} -> AA-BB-CC-DD-EE-FF<o:p></o:p></p>
<p class="MsoNormal">        expand: policy.mac-addr -> policy.mac-addr<o:p></o:p></p>
<p class="MsoNormal">        expand: ^%{config:policy.mac-addr}$ -> ^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})$<o:p></o:p></p>
<p class="MsoNormal">? Evaluating ("%{Calling-Station-Id}" =~ /^%{config:policy.mac-addr}$/i) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">+++++? if ("%{Calling-Station-Id}" =~ /^%{config:policy.mac-addr}$/i ) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">+++++- entering if ("%{Calling-Station-Id}" =~ /^%{config:policy.mac-addr}$/i ) {...}<o:p></o:p></p>
<p class="MsoNormal">        expand: %{1}%{2}%{3}%{4}%{5}%{6} -> AABBCCDDEEFF<o:p></o:p></p>
<p class="MsoNormal">        expand: %{tolower:%{1}%{2}%{3}%{4}%{5}%{6}} -> aabbccddeeff<o:p></o:p></p>
<p class="MsoNormal">++++++[request] returns ok<o:p></o:p></p>
<p class="MsoNormal">+++++- if ("%{Calling-Station-Id}" =~ /^%{config:policy.mac-addr}$/i ) returns ok<o:p></o:p></p>
<p class="MsoNormal">++++- if ((Calling-Station-Id) && (User-Name) ) returns ok<o:p></o:p></p>
<p class="MsoNormal">++++? if ((Tmp-String-0) && (Tmp-String-1) &&  "%{Tmp-String-0}" == "%{Tmp-String-1}" )<o:p></o:p></p>
<p class="MsoNormal">?? Evaluating (Tmp-String-0) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">?? Evaluating (Tmp-String-1) -> TRUE<o:p></o:p></p>
<p class="MsoNormal">        expand: %{Tmp-String-0} -> 11bbccddeeff<o:p></o:p></p>
<p class="MsoNormal">        expand: %{Tmp-String-1} -> aabbccddeeff<o:p></o:p></p>
<p class="MsoNormal">? Evaluating ("%{Tmp-String-0}" == "%{Tmp-String-1}" ) -> FALSE<o:p></o:p></p>
<p class="MsoNormal">++++? if ((Tmp-String-0) && (Tmp-String-1) &&  "%{Tmp-String-0}" == "%{Tmp-String-1}" ) -> FALSE<o:p></o:p></p>
<p class="MsoNormal">++++- entering else else {...}<o:p></o:p></p>
<p class="MsoNormal">+++++[noop] returns noop<o:p></o:p></p>
<p class="MsoNormal">++++- else else returns noop<o:p></o:p></p>
<p class="MsoNormal">+++- policy check.mac_authentication returns ok<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When execution enters the final “else” with the noop, why does the module still return “ok” ?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Any help will be greatly appreciated….<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">-Travis<o:p></o:p></p>
</div>
</body>
</html>