<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">A preview release of 3.0.4 is available here:<br><a href="https://github.com/FreeRADIUS/freeradius-server/archive/release_3_0_4_rc1.tar.gz">https://github.com/FreeRADIUS/freeradius-server/archive/release_3_0_4_rc1.tar.gz</a><br><br>We’re creating a second release candidate for 3.0.4 to verify defects in the last release candidate have been fixed, and that no new issues have crept in.<div><br></div><div>Some changes since the last RC:<br><div><br></div><div>Compile time type checking</div><div>-------------------------------------</div><div>In response to the particularly nasty subtle corruption of memory in FreeRADIUS 3.0.3 caused by mismatched variable/configuration directive types and the configuration parser, we’ve added compile time checking.</div><div><br></div><div><a href="https://github.com/FreeRADIUS/freeradius-server/blob/master/src/include/conffile.h#L44">https://github.com/FreeRADIUS/freeradius-server/blob/master/src/include/conffile.h#L44</a></div><div><br></div><div>This has involved a large amount of code churn as field types in module configuration structs have been altered to match exactly the configuration directive type.</div><div>The most use visible part of these changes is that integer type configuration directives will, in most cases, no longer accept negative values.</div><div><br></div><div>If you find a particular integer type configuration directive that you feel should accept negative integers, let us known and we'll correct it.</div><div><br></div><div>Client / homeserver / listener changes</div><div>-------------------------------------------------</div><div>One of the other changes forced by compile time type checking was for IP/IPv4/IPv6 types. All addresses and prefixes in modules and the server core, are now represented as fr_ipaddr_t. </div><div><br></div><div>This means some places which would only accept IPv4 addresses before now accept IPv4 prefixes and IPv6 addresses/prefixes.</div><div><br></div><div>Internal attribute numbering</div><div>-------------------------------------</div><div>Following the same theme of preventing mismatches within the server, the internal macros used for attribute numbering are now auto-generated at build time.</div><div>This should prevent mismatches occurring between the shipped dictionary and the header files, and allows users building from src to renumber internal attributes (if they really want to) by editing the share/dictionary.freeradius.internal dictionary and recompiling.</div><div><br></div><div>rlm_cache behaviour changes</div><div>----------------------------------------</div><div>One of the things that has prevented people using the rlm_cache module is it’s perceived complexity.</div><div><br></div><div>To make things similar we’ve introduced a couple of behaviour changes. Firstly the module will consume any of the control attributes used to configure it after each call.</div><div><br></div><div>The second change was to add the Cache-Read-Only attribute, which will allow merging of existing cache entries but will prevent new ones being created.</div><div><br></div><div>For caching attributes from LDAP you’d now do something like:</div><div>update control {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>Cache-Read-Only := yes</div><div>}</div><div>cache # Consumes Cache-Read-Only</div><div>if (notfound) {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>ldap</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>cache</div><div>}</div><div><br></div><div>Which is a little simpler than:</div><div><br></div><div>update control {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>Cache-Status-Only := yes</div><div>}</div><div>cache</div><div>update control {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>Cache-Status-Only := no</div><div>}</div><div>if (notfound) {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>ldap</div><div>}</div><div>cache</div><div><br></div><div>It’s also more efficient as for cached entries there’s only a single lookup.</div><div><br></div><div>This shouldn’t affect the majority of installations already using rlm_cache, for most, it will just make some update blocks redundant.</div><div><br></div><div>If you run into any issues log a report at <a href="http://bugs.freeradius.org">http://bugs.freeradius.org</a>, or post to the list.</div><div><br></div><div>-Arran</div><div><br></div><div><br></div></div></body></html>