<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.freeradius.devel">
    <title>gmane.comp.freeradius.devel</title>
    <link>http://blog.gmane.org/gmane.comp.freeradius.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8731"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8730"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8729"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8723"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8722"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8719"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8707"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8705"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8702"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8696"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8695"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8682"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8679"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8675"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8664"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8657"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8656"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8655"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8654"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.freeradius.devel/8653"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8731">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8731</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Updates

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-21T19:05:13Z
Files modified:
* share/dictionary.telkom

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/5113475ce044b03bbd5bd941828d10d7ca514c9f
====== 
removed old comment

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-21T17:04:31Z
Files modified:
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/03783354d0a38aa09e296bf4fb20200b5b5537bf
====== 
Infinite loops are bad.

foo {
...
}

authorize = ${foo}

will add "foo" to the parent section, by appending it to the end
of the list.  But foo is already in the section, so we create
a loop inside the linked list of children.  That's bad.

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-21T16:49:41Z
Files modified:
* src/main/conffile.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/41380536131ec10baecf429acb73ff829245fa5a
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-21T22:00:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8730">
    <title>Commit report for v2.x.x branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8730</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Updates

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-21T19:04:37Z
Files modified:
* share/dictionary.telkom

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/2fa057297c910d0b0eb7c108d63c9c6e9d30f29a
====== 
Merge pull request #293 from fajarnugraha/v2.x.x-suse-20130510

Fix suse package to build and run cleanly for current v2.x.x branch

Alan DeKok&amp;lt; at &amp;gt;2013-05-21T15:10:57Z
Files modified:
* suse/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/e2706906bd7a0932d753974e479c66b85a147d7b
====== 
suse: build fixes

* Bump version to 2.2.1
* Only requires sqlite3-devel and libpcap-devel on Suse 11.x and above
* README was renamed to README.rst

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-21T11:05:48Z
Files modified:
* suse/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/504f188078e0a58c3720a6619af1d22b4d4eab11
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-21T22:00:04</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8729">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8729</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
A better way of getting empty alternations

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-17T17:26:06Z
Files modified:
* src/main/xlat.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/25b6fdd66ac5144610e805d6476b4286c09e9a04
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-17T22:00:07</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8723">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8723</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
'A' is a valid base64 character

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-16T16:43:21Z
Files modified:
* src/lib/base64.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/d34c33d2b70e69eeefd4bae13e0195a8bbe28cb9
====== 
Tests for xlat output

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-16T15:31:56Z
Files modified:
* src/include/parser.h
* src/main/radattr.c
* src/main/xlat.c
* src/tests/xlat.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/e07b87d38abcb5fa4d3a23b1a7f924510cc72313
====== 
Save the parsed array reference

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-16T15:31:38Z
Files modified:
* src/main/xlat.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/bf6e5b1c2ea2a13b137cdba7085531f9a67379c2
====== 
Allow RHS of xlat alternation to be empty

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-16T15:06:03Z
Files modified:
* src/main/xlat.c
* src/tests/xlat.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/d8c42aee4920c792cdfb7e84fa5288d09e12f27a
====== 
Close FD before returning

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-16T00:11:32Z
Files modified:
* src/modules/rlm_linelog/rlm_linelog.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/f39d76611b20699a729032eb94829a0d3784cd40
====== 
Use correct version of radius_xlat

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-16T00:10:46Z
Files modified:
* src/modules/rlm_radutmp/rlm_radutmp.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/655385635dcec39e450ad03ec730549c10e64589
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-16T22:00:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8722">
    <title>More additions to unlang</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8722</link>
    <description>&lt;pre&gt;  The changes in today add "compile-time" validation, and evaluation of
static values.  For example:

 if (Session-Timeout &amp;lt; blue) {

  In v2, the server will start, and give run-time errors.

  In v3, the server will refuse to start, as "blue" is not a valid number.

  Even better, parts of the virtual servers can now be removed at start
time:

if (0) {
sql
ldap
}

  When the contents of a condition are statically equivalent to false
(e.g. 0), then the contents of the "if" block are completely ignored.
It lets you have conditional parts of the configuration, which have zero
run-time CPU or memory cost.

  Alan DeKok.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html

&lt;/pre&gt;</description>
    <dc:creator>Alan DeKok</dc:creator>
    <dc:date>2013-05-16T21:51:53</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8719">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8719</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
A more robust way of statically removing "if (false)" sections

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-15T18:07:04Z
Files modified:
* src/main/modules.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/4bc3e552b5e4f6b218ec1294ceab26f2139533ca
====== 
Never mind... we'll get to this later

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-15T17:25:00Z
Files modified:
* src/main/modules.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/4c0eba986561c0a0c97235c8b6dcc790d7aa1127
====== 
Minor fixes

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-15T16:20:05Z
Files modified:
* src/main/modules.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/7f01740fdc2f56ac600b43bff12ef63e135f9243
====== 
Ignore subsections which statically evaluate to "false"

So that large swaths of the configuration can be taken out
of the configuration with zero run-time memory or CPU impact

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-15T16:13:33Z
Files modified:
* src/main/modules.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/11d1a7e7fce162d55e01f2974f1b03cf8ac06f5c
====== 
Moved "exec_trigger" to threads.c

It's a function which is useful only for the server core,
and requires access to the mainconfig data structure

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-15T15:49:25Z
Files modified:
* src/main/exec.c
* src/main/threads.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/dbbacc4449dcc782189643a85b66bcfec352fab7
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-15T22:00:07</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8707">
    <title>MODULE DEV: Problem adding an attribute to access-accept message</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8707</link>
    <description>&lt;pre&gt;Hi List!

I am learning how to write a custom module (in my case for authorization 
in prepaid billing) and I need to add some custom attributes (both 
standard and VSA) to access-accept message. I am trying to do this in 
mod_authorize:

         service = pairfind(request-&amp;gt;packet-&amp;gt;vps, 
CISCO_SSG_SERVICE_INFO, VENDOR_CISCO, TAG_ANY);
         if (service != NULL) {
           RDEBUG("Found CISCO_SSG_SERVICE_INFO -&amp;gt; Prepaid billing 
request");
           pairmake_reply("Idle-Timeout",10, T_OP_ADD);
           request-&amp;gt;reply-&amp;gt;code = PW_AUTHENTICATION_ACK;
           return RLM_MODULE_OK;
          }

I can see in a log that this part of code is used:

(0) prepaid : Found CISCO_SSG_SERVICE_INFO -&amp;gt; Prepaid billing request
(0)   [prepaid] = handled
(0) # Executing section post-auth from file 
/usr/local/etc/raddb/sites-enabled/default
(0)   group post-auth {
(0)  - entering group post-auth {...}
(0)   [exec] = noop
Sending Access-Accept of id 12 from 0.0.0.0 port 1812 to 192.168.123.196 
port 49444
(0) Finished request 0.

but there is no "Idle-Timeout" in outgoing Access-Accept. I cannot 
figure out what am I doing wrong...

Please help!

BR,
iostres
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html

&lt;/pre&gt;</description>
    <dc:creator>Ivan Ostres</dc:creator>
    <dc:date>2013-05-15T09:28:37</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8705">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8705</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Move many common functions to a common library

And add stupid wrappers for rad_fork() and rad_waitpid()
We can go fix those later...

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-14T22:20:30Z
Files modified:
* src/main/all.mk
* src/main/libfreeradius-server.mk
* src/main/radattr.c
* src/main/radattr.mk
* src/main/radconf2xml.c
* src/main/radconf2xml.mk
* src/main/radiusd.mk
* src/main/radmin.c
* src/main/radmin.mk
* src/main/radwho.c
* src/main/radwho.mk

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/83181ee2ce1c70978396cca359eb5be42b1c4e60
====== 
Remove use of global variable

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-14T22:20:05Z
Files modified:
* src/main/exec.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/c83dbcd187ab37d92cd07fb082c38632a71e824e
====== 
Make other programs use evaluate.c, too.

We'll move these programs into a utility library soon...

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-14T20:48:54Z
Files modified:
* src/main/radconf2xml.mk
* src/main/radmin.mk
* src/main/radwho.mk

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/2facd7cc028790a752d4d272fcda92e37e5d455b
====== 
Evaluate some conditions at parse time.

If the LHS and RHS are both DATA, then evaluate them statically,
and turn them into true / false conditions

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-14T20:07:20Z
Files modified:
* src/main/parser.c
* src/main/radattr.mk
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/b154ac7f52a19414072aee9a0ea5db89a95542f1
====== 
Added 'true' and 'false' as top-level concepts.

So that "false &amp;amp;&amp;amp; FOO" gets mapped to "false"

Nice little optimizations...

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-14T19:45:08Z
Files modified:
* src/include/parser.h
* src/main/evaluate.c
* src/main/parser.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/d2015e7993ccbe1e98e3d72138a3d10774d7c059
====== 
Parse literals into VALUE_PAIR_DATA at compile time.

So that we have better errors.

However... we don't have type-specific parse errors, as
the current error API in conditions doesn't allow for that.

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-14T19:12:20Z
Files modified:
* src/main/evaluate.c
* src/main/parser.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/e22074fec555226f5d3fc02dd925be2885403bcc
====== 
Print names for enumerated types

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-14T17:27:20Z
Files modified:
* src/lib/print.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/ce4934170984355a0cf635a406fdecf77bbf976b
====== 
Added template "data" type

So that the data can be stored as pre-parsed data, instead of
as strings parsed at run-time

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-14T17:27:11Z
Files modified:
* src/include/map.h
* src/main/evaluate.c
* src/main/map.c
* src/main/valuepair.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/d1ca41be0e5a6472adf9544fefa9a8a4845a1e49
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-14T22:00:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8702">
    <title>How to convert the Reply-Message as challenge</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8702</link>
    <description>&lt;pre&gt;
Hi

We have a radius server which does not understand EAP and we are using Free Radius as EAP-PEAP-GTC proxy-inner-tunnel.

As the present code does not set User-Password in EAP-PEAP-GTC mode so we made the following code changes:


1. File:  src/modules/rlm_eap/types/rlm_eap_gtc/rlm_eap_gtc.c

    In function gtc_initiate(void *type_data, EAP_HANDLER *handler)

    Added following lines with reference to  the src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c file

   #ifdef WITH_PROXY

        /*

         *      The EAP session doesn't have enough information to

         *      proxy the "inside EAP" protocol.  Disable EAP proxying.

         */

        handler-&amp;gt;request-&amp;gt;options &amp;amp;= ~RAD_REQUEST_OPTION_PROXY_EAP;

    #endif



2. We also added the following  functions in rlm_eap_gtc.c file

      static int gtc_postproxy(EAP_HANDLER *handler, void *tunnel_data)

      This functions doesn't seem to be called.



3. gtc_autheticate changes:

#ifdef WITH_PROXY

        /*

         *      If this options is set, then we do NOT authenticate the

         *      user here.  Instead, now that we've added the PAP

         *      attributes to the request, we STOP, and let the outer

         *      tunnel code handle it.

         *

         *      This means that the outer tunnel code will DELETE the

         *      EAP attributes, and proxy the PAP attributes to a

         *      home server.

         */

        if (handler-&amp;gt;request-&amp;gt;options &amp;amp; RAD_REQUEST_OPTION_PROXY_EAP) {



                /*

                 *      Set up the callbacks for the tunnel

                */

                eap_tunnel_data_t *tunnel;

                tunnel = rad_malloc(sizeof(*tunnel));

                memset(tunnel, 0, sizeof(*tunnel));



                tunnel-&amp;gt;tls_session = type_data;

                tunnel-&amp;gt;callback = gtc_postproxy;



                /*

                 *      Associate the callback with the request.

                */

                rcode = request_data_add(handler-&amp;gt;request,

                                         handler-&amp;gt;request-&amp;gt;proxy,

                                         REQUEST_DATA_EAP_TUNNEL_CALLBACK,

                                         tunnel, free);

                rad_assert(rcode == 0);



                pairdelete(&amp;amp;handler-&amp;gt;request-&amp;gt;packet-&amp;gt;vps, PW_STATE);



                return 1;

        }

#endif



The modified rlm_eap_gtc.c is attached for reference.



With these code changes we are able to set the User-Password in EAP-PEAP-GTC proxy mode. Also, debug message from gtc_postproxy is not visible in the log file.



However, when the proxied-to RADIUS Server throws Access-Challenge the same is not  forwarded by Free RADIUS to the client i.e. Reply-Message is stripped by Free RADIUS.



Please let us know how to convert the Reply-Message as challenge for the client.



Thanks n regards

Sankalp Dubey
/*
 * rlm_eap_gtc.c    Handles that are called from eap
 *
 * Version:     $Id$
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 *
 * Copyright 2003,2006  The FreeRADIUS server project
 */

#include &amp;lt;freeradius-devel/ident.h&amp;gt;
RCSID("$Id$")

#include &amp;lt;freeradius-devel/autoconf.h&amp;gt;

#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

#include "eap.h"

#include &amp;lt;freeradius-devel/rad_assert.h&amp;gt;

/*
 *EAP-GTC is just ASCII data carried inside of the EAP session.
 *The length of the data is indicated by the encapsulating EAP
 *protocol.
 */
typedef struct rlm_eap_gtc_t {
const char*challenge;
const char*auth_type_name;
intauth_type;
} rlm_eap_gtc_t;

static CONF_PARSER module_config[] = {
{ "challenge", PW_TYPE_STRING_PTR,
  offsetof(rlm_eap_gtc_t, challenge), NULL, "Password: " },

{ "auth_type", PW_TYPE_STRING_PTR,
  offsetof(rlm_eap_gtc_t, auth_type_name), NULL, "PAP" },

 { NULL, -1, 0, NULL, NULL }           /* end the list */
};


/*
 *Detach the module.
 */
static int gtc_detach(void *arg)
{
rlm_eap_gtc_t *inst = (rlm_eap_gtc_t *) arg;


free(inst);

return 0;
}

/*
 *Attach the module.
 */
static int gtc_attach(CONF_SECTION *cs, void **instance)
{
rlm_eap_gtc_t*inst;
DICT_VALUE*dval;

inst = malloc(sizeof(*inst));
if (!inst) {
radlog(L_ERR, "rlm_eap_gtc: out of memory");
return -1;
}
memset(inst, 0, sizeof(*inst));

/*
 *Parse the configuration attributes.
 */
if (cf_section_parse(cs, inst, module_config) &amp;lt; 0) {
gtc_detach(inst);
return -1;
}

dval = dict_valbyname(PW_AUTH_TYPE, inst-&amp;gt;auth_type_name);
if (!dval) {
radlog(L_ERR, "rlm_eap_gtc: Unknown Auth-Type %s",
       inst-&amp;gt;auth_type_name);
gtc_detach(inst);
return -1;
}

inst-&amp;gt;auth_type = dval-&amp;gt;value;

*instance = inst;

return 0;
}

/*
 *Initiate the EAP-GTC session by sending a challenge to the peer.
 */
static int gtc_initiate(void *type_data, EAP_HANDLER *handler)
{
char challenge_str[1024] = {0};
int length;
EAP_DS *eap_ds = handler-&amp;gt;eap_ds;
rlm_eap_gtc_t *inst = (rlm_eap_gtc_t *) type_data;

if (!radius_xlat(challenge_str, sizeof(challenge_str), inst-&amp;gt;challenge, handler-&amp;gt;request, NULL)) {
radlog(L_ERR, "rlm_eap_gtc: xlat of \"%s\" failed", inst-&amp;gt;challenge);
return 0;
}

length = strlen(challenge_str);

/*
 *We're sending a request...
 */
eap_ds-&amp;gt;request-&amp;gt;code = PW_EAP_REQUEST;

eap_ds-&amp;gt;request-&amp;gt;type.data = malloc(length);
if (eap_ds-&amp;gt;request-&amp;gt;type.data == NULL) {
radlog(L_ERR, "rlm_eap_gtc: out of memory");
return 0;
}

memcpy(eap_ds-&amp;gt;request-&amp;gt;type.data, challenge_str, length);
eap_ds-&amp;gt;request-&amp;gt;type.length = length;

#ifdef WITH_PROXY
        /*
         *      The EAP session doesn't have enough information to
         *      proxy the "inside EAP" protocol.  Disable EAP proxying.
         */
        handler-&amp;gt;request-&amp;gt;options &amp;amp;= ~RAD_REQUEST_OPTION_PROXY_EAP;
#endif

/*
 *We don't need to authorize the user at this point.
 *
 *We also don't need to keep the challenge, as it's
 *stored in 'handler-&amp;gt;eap_ds', which will be given back
 *to us...
 */
handler-&amp;gt;stage = AUTHENTICATE;

return 1;
}


#ifdef WITH_PROXY
/*
 *      Do post-proxy processing,
 *      0 = fail
 *      1 = OK.
 *
 *      Called from rlm_eap.c, eap_postproxy().
 */
static int gtc_postproxy(EAP_HANDLER *handler, void *tunnel_data)
{
        REQUEST* request = handler-&amp;gt;request;
        tunnel_data = tunnel_data; /* -Wunused */

        DEBUG2("  rlm_eap_gtc: Passing reply from proxy back into the tunnel %p %d.", handler-&amp;gt;request, handler-&amp;gt;request-&amp;gt;reply-&amp;gt;code);

        /*
         *      Done doing EAP proxy stuff.
         */
        handler-&amp;gt;request-&amp;gt;options &amp;amp;= ~RAD_REQUEST_OPTION_PROXY_EAP;

        return 1;
}
#endif

/*
 *Authenticate a previously sent challenge.
 */
static int gtc_authenticate(void *type_data, EAP_HANDLER *handler)
{
VALUE_PAIR *vp;
EAP_DS *eap_ds = handler-&amp;gt;eap_ds;
rlm_eap_gtc_t *inst = (rlm_eap_gtc_t *) type_data;

/*
 *Get the Cleartext-Password for this user.
 */
rad_assert(handler-&amp;gt;request != NULL);
rad_assert(handler-&amp;gt;stage == AUTHENTICATE);

/*
 *Sanity check the response.  We need at least one byte
 *of data.
 */
if (eap_ds-&amp;gt;response-&amp;gt;length &amp;lt;= 4) {
radlog(L_ERR, "rlm_eap_gtc: corrupted data");
eap_ds-&amp;gt;request-&amp;gt;code = PW_EAP_FAILURE;
return 0;
}

#if 0
if ((debug_flag &amp;gt; 2) &amp;amp;&amp;amp; fr_log_fp) {
int i;

for (i = 0; i &amp;lt; eap_ds-&amp;gt;response-&amp;gt;length - 4; i++) {
if ((i &amp;amp; 0x0f) == 0) fprintf(fr_log_fp, "%d: ", i);

fprintf(fr_log_fp, "%02x ", eap_ds-&amp;gt;response-&amp;gt;type.data[i]);

if ((i &amp;amp; 0x0f) == 0x0f) fprintf(fr_log_fp, "\n");
}
}
#endif

/*
 *Handle passwords here.
 */
if (inst-&amp;gt;auth_type == PW_AUTHTYPE_LOCAL) {
/*
 *For now, do clear-text password authentication.
 */
vp = pairfind(handler-&amp;gt;request-&amp;gt;config_items, PW_CLEARTEXT_PASSWORD);
if (!vp) {
DEBUG2("  rlm_eap_gtc: ERROR: Cleartext-Password is required for authentication.");
eap_ds-&amp;gt;request-&amp;gt;code = PW_EAP_FAILURE;
return 0;
}

if (eap_ds-&amp;gt;response-&amp;gt;type.length != vp-&amp;gt;length) {
  DEBUG2("  rlm_eap_gtc: ERROR: Passwords are of different length. %u %u", (unsigned) eap_ds-&amp;gt;response-&amp;gt;type.length, (unsigned) vp-&amp;gt;length);
eap_ds-&amp;gt;request-&amp;gt;code = PW_EAP_FAILURE;
return 0;
}

if (memcmp(eap_ds-&amp;gt;response-&amp;gt;type.data,
   vp-&amp;gt;vp_strvalue, vp-&amp;gt;length) != 0) {
DEBUG2("  rlm_eap_gtc: ERROR: Passwords are different");
eap_ds-&amp;gt;request-&amp;gt;code = PW_EAP_FAILURE;
return 0;
}

/*
 *EAP packets can be ~64k long maximum, and
 *we don't like that.
 */
} else if (eap_ds-&amp;gt;response-&amp;gt;type.length &amp;lt;= 128) {
int rcode;

/*
 *If there was a User-Password in the request,
 *why the heck are they using EAP-GTC?
 */
pairdelete(&amp;amp;handler-&amp;gt;request-&amp;gt;packet-&amp;gt;vps, PW_USER_PASSWORD);

vp = pairmake("User-Password", "", T_OP_EQ);
if (!vp) {
radlog(L_ERR, "rlm_eap_gtc: out of memory");
return 0;
}
vp-&amp;gt;length = eap_ds-&amp;gt;response-&amp;gt;type.length;
memcpy(vp-&amp;gt;vp_strvalue, eap_ds-&amp;gt;response-&amp;gt;type.data, vp-&amp;gt;length);
vp-&amp;gt;vp_strvalue[vp-&amp;gt;length] = 0;

/*
 *Add the password to the request, and allow
 *another module to do the work of authenticating it.
 */
pairadd(&amp;amp;handler-&amp;gt;request-&amp;gt;packet-&amp;gt;vps, vp);
handler-&amp;gt;request-&amp;gt;password = vp;

#ifdef WITH_PROXY
        /*
         *      If this options is set, then we do NOT authenticate the
         *      user here.  Instead, now that we've added the PAP
         *      attributes to the request, we STOP, and let the outer
         *      tunnel code handle it.
         *
         *      This means that the outer tunnel code will DELETE the
         *      EAP attributes, and proxy the PAP attributes to a
         *      home server.
         */
        if (handler-&amp;gt;request-&amp;gt;options &amp;amp; RAD_REQUEST_OPTION_PROXY_EAP) {

                /*
                 *      Set up the callbacks for the tunnel
                */
                eap_tunnel_data_t *tunnel;
                tunnel = rad_malloc(sizeof(*tunnel));
                memset(tunnel, 0, sizeof(*tunnel));

                tunnel-&amp;gt;tls_session = type_data;
                tunnel-&amp;gt;callback = gtc_postproxy;

                /*
                 *      Associate the callback with the request.
                */
                rcode = request_data_add(handler-&amp;gt;request,
                                         handler-&amp;gt;request-&amp;gt;proxy,
                                         REQUEST_DATA_EAP_TUNNEL_CALLBACK,
                                         tunnel, free);
                rad_assert(rcode == 0);

                pairdelete(&amp;amp;handler-&amp;gt;request-&amp;gt;packet-&amp;gt;vps, PW_STATE);

                return 1;
        }
#endif

/*
 *This is a wild &amp;amp; crazy hack.
 */
rcode = module_authenticate(inst-&amp;gt;auth_type, handler-&amp;gt;request);
if (rcode != RLM_MODULE_OK) {
eap_ds-&amp;gt;request-&amp;gt;code = PW_EAP_FAILURE;
return 0;
}

} else {
radlog(L_ERR, "rlm_eap_gtc: Response is too large to understand");
eap_ds-&amp;gt;request-&amp;gt;code = PW_EAP_FAILURE;
return 0;

}

DEBUG2("  rlm_eap_gtc: Everything is OK.");

eap_ds-&amp;gt;request-&amp;gt;code = PW_EAP_SUCCESS;

return 1;
}

/*
 *The module name should be the only globally exported symbol.
 *That is, everything else should be 'static'.
 */
EAP_TYPE rlm_eap_gtc = {
"eap_gtc",
gtc_attach,      /* attach */
gtc_initiate,/* Start the initial request */
NULL,/* authorization */
gtc_authenticate,/* authentication */
gtc_detach     /* detach */
};
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html&lt;/pre&gt;</description>
    <dc:creator>Sankalp Dubey</dc:creator>
    <dc:date>2013-05-14T11:42:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8696">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8696</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Make radlog available in the "init" function of the Perl code

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-13T20:29:59Z
Files modified:
* src/modules/rlm_perl/rlm_perl.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/33115285b8f852c5c18825771842e02d640f0d50
====== 
Checks for empty expansions

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-13T15:06:28Z
Files modified:
* src/main/xlat.c
* src/tests/xlat.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/c4f13b3fe8560cc22f19f996848c32b18d8b8e63
====== 
Start of type checks on RHS of conditions

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-13T14:58:11Z
Files modified:
* src/main/parser.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/91e9b9e237d9df204d4b5f8bff4c2ba3fe0c93a3
====== 
Disallow RHS bare words for string attributes

User-Name == "bob" is OK
User-Name == bob is not

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-13T01:28:53Z
Files modified:
* src/main/parser.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/900117a4c652b1465f3b598de4ad6f5692686100
====== 
Add single quotes around literals for attributes of type string

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-13T01:28:36Z
Files modified:
* src/main/map.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/a64099b8bdc2678bcb4436a449d021d60623bfb2
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-13T22:00:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8695">
    <title>Commit report for v2.x.x branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8695</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Make radlog available in the "init" function of the Perl code

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-13T18:32:55Z
Files modified:
* src/modules/rlm_perl/rlm_perl.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/7f2d6e365eb5b882662575bc66c92471bda96932
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-13T22:00:05</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8682">
    <title>bugfix</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8682</link>
    <description>&lt;pre&gt;Hello Guys,

I am trying to contribute one bugfix to the freeradius server. I have read
all the stuff how to contribute and I understand, that you really like pull
requests.

But no, I will not create any github account at all. I am not using it and
I am not going to join the freeradius developer community, since I do not
have time for it. I think it is completely stupid to create an github
account which I will forget next week. And therefore I will not do it.

My patch solving an issue of not working of the perl function
radiusd::radlog in rlm_perl is attached. Please feel free to use it however
you want. And I am really sorry not providing you the expected pull request.

After sending this e-mail I am going to unsubscribe from the
freeradius-devel list, so if you want to tell me anything (I am not
expecting so), please write on my e-mail address marek.sterzik&amp;lt; at &amp;gt;gmail.com

Best regards

Marek Sterzik
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html&lt;/pre&gt;</description>
    <dc:creator>Marek Sterzik</dc:creator>
    <dc:date>2013-05-13T13:13:37</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8679">
    <title>ASSERT FAILED</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8679</link>
    <description>&lt;pre&gt;Hi,

When I put something like that into unlang rules:

%{%{Operator-Name}:-}
my server fails with
ASSERT FAILED src/main/xlat.c[1509]: node-&amp;gt;alternate != NULL

The same is with other attribute names.
When I put non empty default  value all goes smoothly.
 
I'm testing the current master git version:
radiusd: FreeRADIUS Version 3.0.0 (git #6d78b5f)

Maja

&lt;/pre&gt;</description>
    <dc:creator>Maja Wolniewicz</dc:creator>
    <dc:date>2013-05-13T12:20:32</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8675">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8675</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Abstract cidr comparison into common function

And use it for v4 / v6 CIDRs!

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T23:11:53Z
Files modified:
* src/lib/valuepair.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/6d78b5fbb30be63f2adc3da8e106036d59bfda56
====== 
Allow CIDR comparisons for v4 in paircmp_op

foo/n = bar/m  is true if foo==bar and n==m

foo/n &amp;lt; bar/m is true if n &amp;gt; m and foo is within bar

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T18:16:55Z
Files modified:
* src/lib/valuepair.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/cd24117011df3e8e28acff73ea4a61c50f7e2ff2
====== 
Use better field for printing IP addresses

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T18:10:23Z
Files modified:
* src/lib/print.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/c9095efa42cdcd4174535b371b3a8d50f2724c62
====== 
Redundant casts get squashed

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T17:16:03Z
Files modified:
* src/main/parser.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/cbadcf1bbee84e215fff438dec15d33ce332fa41
====== 
Be more aggressive about freeing intermediate strings.

Yes, talloc will free them up.  But there's no reason to leave
them hanging around.

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T16:16:13Z
Files modified:
* src/main/parser.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/1aa82f3621486aa3f5c4e3fa35d80eb88c4be521
====== 
Added -M for talloc report

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T16:15:54Z
Files modified:
* src/main/radattr.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/b5140737e112ac71c9995f7df86b9fb7196a928e
====== 
Log function prototypes belong in log.h

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T16:14:48Z
Files modified:
* src/include/log.h
* src/include/radiusd.h

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/61ef2aceb73d18af05aaf7cea20914e49cde1f8f
====== 
More tests for conditions and =* and =*

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T15:53:51Z
Files modified:
* src/main/map.c
* src/main/parser.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/b9155c75561f6c2ffeeb0189bcddb9251e1db649
====== 
Checks for existence / non-existince on strings are invalid

"foo" =* bar

doesn't make sense, as the string "foo" always exists

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T15:37:34Z
Files modified:
* src/main/parser.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/af56ae9d487319e404486d63520a37c983d7d0c1
====== 
Fix order of arguments to paircmp_op

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T15:32:44Z
Files modified:
* src/lib/valuepair.c
* src/main/evaluate.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/1d6840aa4a5a94aab323d5ec5f8736388e7087a4
====== 
Fix compiler warnings

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T15:10:15Z
Files modified:
* src/modules/rlm_opendirectory/rlm_opendirectory.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/961cc2a886a0ef8c077440dcacf1aa249f4bf5f1
====== 
don't use strlcpy for binary buffers

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T15:05:31Z
Files modified:
* src/modules/rlm_radutmp/rlm_radutmp.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/badcf302079725c4dcf14e105c3d4ac725cb0997
====== 
track pointer properly

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T15:04:01Z
Files modified:
* src/modules/rlm_eap/types/rlm_eap_leap/eap_leap.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/283aff76a3b8c1caacd25e72ca9ca8ef54f535f9
====== 
use talloc for strings

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T14:57:51Z
Files modified:
* src/modules/rlm_expr/paircmp.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/81fa7e6c7a6389417db6040f33cf2f4c684af335
====== 
don't call pairfind when we have the vp

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T14:55:51Z
Files modified:
* src/modules/rlm_eap/types/rlm_eap_peap/peap.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/30631e7dd6de8d38d88445c395a51688a3496cc9
====== 
use correct ptr for pool name

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T14:54:44Z
Files modified:
* src/main/process.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/2640c380843635d1ed62133ff9b5bac6b89ab747
====== 
Remove dead code

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T14:53:27Z
Files modified:
* src/main/xlat.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/a9b4d1f896571aac0bfc979eb715302dae5047e7
====== 
Made "cidr" a synonym for ipv4prefix

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-12T14:50:50Z
Files modified:
* src/lib/dict.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/d32d722420f02e8a2eb21cde1a0e703769fd530b
====== 
Digest buffer for sha1 xlat must be 20 bytes (not 16)

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-12T03:19:47Z
Files modified:
* src/modules/rlm_expr/rlm_expr.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/f690ac93dc00d29971147ede27eaa899309a5b66
====== 
Missing va_end

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-12T03:17:05Z
Files modified:
* src/main/log.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/2058df0d667df277ba6f364636d71d2e7fbf69c6
====== 
Coverity - missing va_end

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-12T03:15:44Z
Files modified:
* src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/db0385ca6ac3207a725fda2bf7530cb1395a1939
====== 
Coverity - Dealock in firebird

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-12T03:14:21Z
Files modified:
* src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/ee407b76b70d31ca75c7abea4be594605ebde84e
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-12T22:00:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8664">
    <title>rad_unlockfd</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8664</link>
    <description>&lt;pre&gt;I noticed something odd in rad_unlockfd - both 2.x.x and master.

int rad_unlockfd(int fd, int lock_len)
{
...
        fl.l_type = F_WRLCK;
        fl.l_whence = SEEK_CUR;

        return fcntl(fd, F_UNLCK, (void *)&amp;amp;fl);

However, according to the Linux manpage for fcntl:

       F_SETLK (struct flock *)
              Acquire  a lock (when l_type is F_RDLCK or F_WRLCK) or release a
              lock (when l_type is F_UNLCK) on  the  bytes  specified  by  the
              l_whence,  l_start,  and l_len fields of lock.  If a conflicting
              lock is held by another process, this call returns -1  and  sets
              errno to EACCES or EAGAIN.

That is: to unlock, the command should be F_SETLK(W) and the l_type should
be F_UNLCK.  The OSX (BSD) manpage agrees.

On Linux, the constant F_UNLCK is 2, so calling fcntl(fd, F_UNLCK...)
is the same as calling fcntl(fd, F_SETFD...)

The other oddity is using SEEK_CUR for both lock and unlock. If you have
written to the file in the mean time, then the current file offset will have
changed, so you may end up unlocking a different byte range to the one you
locked.  I'd say SEEK_SET with offset 0 and length 0 (which locks or unlocks
the entire file, including past its end) is safest - at least when
unlocking.

As far as I can see, only rad_utmp calls this function, so the impact is not
huge.

Regards,

Brian.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html

&lt;/pre&gt;</description>
    <dc:creator>Brian Candler</dc:creator>
    <dc:date>2013-05-12T14:16:42</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8657">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8657</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Doxygen

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-11T16:22:37Z
Files modified:
* src/main/evaluate.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/ed83b59a6ac2522d27f8d23b89721b7df9573bb2
====== 
Allow casting for LHS of conditions.

And document them!

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-11T16:15:23Z
Files modified:
* man/man5/unlang.5
* share/dictionary.freeradius.internal
* src/include/parser.h
* src/include/radiusd.h
* src/main/evaluate.c
* src/main/parser.c
* src/tests/condition.txt

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/b1dd1d26731435758e0432b36da32088dbe39eb4
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-11T22:00:05</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8656">
    <title>New feature in v3: cast!</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8656</link>
    <description>&lt;pre&gt;  Not fishing casts, but data type casts. :)  See "man unlang" for details.

  if (&amp;lt;ipaddr&amp;gt;127.0.0.1 &amp;lt; &amp;amp;Framed-IP-Address) {
...
  }

  It allows you to do type-specific comparisons.  v2 usually did string
comparisons for conditions.  To get type-specific comparisons, you
sometimes needed to put the data into an intermediate variable.

  That was ugly.  The casting is nicer.

  That being said, the above example *did* work in v2, with some changes:

  if (Framed-IP-Address &amp;gt; 127.0.0.1) {
...
  }

  That worked by parsing the RHS into a temporary variable, and then
doing type-specific comparisons.  But you couldn't do:

  if (&amp;lt;date&amp;gt;"January 1 2014" &amp;lt; "%{sql: SELECT ...}") {
...
  }

  You had to put one or the other of the strings into an intermediate
variable.

  This is another minor feature which just makes things nicer.

  Alan DeKok.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html

&lt;/pre&gt;</description>
    <dc:creator>Alan DeKok</dc:creator>
    <dc:date>2013-05-11T14:19:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8655">
    <title>Commit report for v2.x.x branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8655</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Merge pull request #286 from fajarnugraha/v2.x.x-redhat-20130509

Fix redhat package to build and run cleanly for current v2.x.x branch

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-10T00:51:15Z
Files modified:
* redhat/freeradius-cert-config.patch
* redhat/freeradius-dhcp_sqlippool.patch
* redhat/freeradius-radeapclient-ipv6.patch
* redhat/freeradius-radtest.patch
* redhat/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/e79ccbf89c3375c585a589d2dab329634b7b0a22
====== 
redhat: package all modules in freeradius RPM

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-09T13:11:18Z
Files modified:
* redhat/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/ed336742a65345f4a085577829d108bfb76e7fe3
====== 
redhat: only keep the last changelog from original spec file

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-09T13:09:57Z
Files modified:
* redhat/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/5240ada0f28d98edb02909285cd9530a0f5a889c
====== 
redhat: package everything in freeradius rpm

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-09T13:04:05Z
Files modified:
* redhat/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/bcae31b1716529e75320cd215848da9db1c97a28
====== 
redhat: removed obsolete patches

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-09T13:02:33Z
Files modified:
* redhat/freeradius-dhcp_sqlippool.patch
* redhat/freeradius-radeapclient-ipv6.patch
* redhat/freeradius-radtest.patch
* redhat/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/bc38b7d5911ea2b3a4256208ccde281ead686196
====== 
redhat: README was renamed to README.rst

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-09T13:01:47Z
Files modified:
* redhat/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/766fd283caa3e09411f3d67199457c7db05b44d7
====== 
redhat: refresh freeradius-cert-config.patch

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-09T13:01:28Z
Files modified:
* redhat/freeradius-cert-config.patch

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/69d798819b98924238701c0de88514165ff5105f
====== 
redhat: add "make" to BuildRequires list

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-09T13:01:12Z
Files modified:
* redhat/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/50d0bf530b1dc205676d2091e648d9513b209a17
====== 
redhat: bump version in specfile to 2.2.1

Fajar A. Nugraha&amp;lt; at &amp;gt;2013-05-09T10:49:39Z
Files modified:
* redhat/freeradius.spec

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/561e929be6172c30d60d9ccbe8cda2fc75a5170d
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-10T22:00:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8654">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8654</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Sample configuration for new rlm_idn

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-10T03:49:53Z
Files modified:
* raddb/mods-available/idn

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/bd8e168a8ade0349ad637ea30c1225ac942bb492
====== 
Match the module configuration

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-10T03:49:18Z
Files modified:
* man/man5/rlm_idn.5

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/c0f2736c672bc3bc4f6ba24aab7ce006718b5b3c
====== 
strnlen isn't necessary

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-10T03:41:16Z
Files modified:
* src/modules/rlm_idn/rlm_idn.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/922050edcaa9d0a2facbc0ee859b3baa31d24e0a
====== 
Should be libidn11

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-10T02:00:41Z
Files modified:
* .travis.yml

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/9137834a0bd2e71f2579e8806907dd4245c416f7
====== 
Remove unneeded lookups in pool_check_home_server

  This function no longer adds home servers since 1dbfd81e
  The search for the cs section is unneeded, as is the second rbtree search

skids (via Arran Cudbard-Bell)&amp;lt; at &amp;gt;2013-05-10T00:50:30Z
Files modified:
* src/main/realms.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/72bc7ec0f76153707b7de3b740b26e7c37818edf
====== 
Add dependency for rlm_idn to travis

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-10T00:43:55Z
Files modified:
* .travis.yml

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/ec525729cc993db869bf7f066e7e6d8f7bae39b6
====== 
Add rlm_idn

This module will support any StringPrep needs especially IDNA.

It will be of limited practical usefulness until DDDS, which
requires it, is implemented, but at least this gets one small
separable task out of the way.

It is not simply added to rlm_expr for packaging reasons.
Despite the appearenceof simplicity, there's a lot of icky
unicode muckery, so it would be a bit onerous to provide an
in-tree implementation.

As such, for distros that split up rlms, this would allow severing
dependencies on libidn11 from the main freeradius package.

skids (via Arran Cudbard-Bell)&amp;lt; at &amp;gt;2013-05-10T00:43:55Z
Files modified:
* man/man5/rlm_idn.5
* raddb/experimental.conf
* src/modules/rlm_idn/.gitignore
* src/modules/rlm_idn/all.mk.in
* src/modules/rlm_idn/configure
* src/modules/rlm_idn/configure.in
* src/modules/rlm_idn/rlm_idn.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/a31a7626261fc78d0f05de47ca615d539b7e19f8
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-10T22:00:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8653">
    <title>Commit report for v2.x.x branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8653</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
RFC 6930 and dictionary

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T20:02:43Z
Files modified:
* doc/rfc/rfc6930.txt
* share/dictionary
* share/dictionary.rfc6930

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/f746e171346061fa534cdb72d9226e666b502e28
====== 
RFC 6911 and dictionary

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T20:02:35Z
Files modified:
* doc/rfc/rfc6911.txt
* share/dictionary
* share/dictionary.rfc6911

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/42f4e3be2736a388871f16130f880dbee80c1f9a
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-09T22:00:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.freeradius.devel/8652">
    <title>Commit report for master branch</title>
    <link>http://comments.gmane.org/gmane.comp.freeradius.devel/8652</link>
    <description>&lt;pre&gt;New activity for FreeRADIUS (the high performance and highly configurable RADIUS server)

======
Updated for v3

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T20:03:52Z
Files modified:
* share/dictionary.rfc6930

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/ab149c8ac847b8256697e8dc6d8f9173d52de64a
====== 
RFC 6930 and dictionary

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T20:03:52Z
Files modified:
* doc/rfc/rfc6930.txt
* share/dictionary
* share/dictionary.rfc6930

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/74b837657b73d90b90029a7712a77aeb3c7552f5
====== 
RFC 6911 and dictionary

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T20:03:45Z
Files modified:
* doc/rfc/rfc6911.txt
* share/dictionary
* share/dictionary.rfc6911

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/11572562699449a7c1adc5e96d295d6851342096
====== 
Use correctly sized buffer for MD5

and use a time-invariant comparison

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T16:07:38Z
Files modified:
* src/modules/rlm_eap/types/rlm_eap_md5/eap_md5.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/4fd49c4c8c38a3add06a13425049ae61d1fe74e2
====== 
Remove length limitations on names

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T16:00:29Z
Files modified:
* src/modules/rlm_realm/rlm_realm.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/7a18fd7991427a7427a56f91a2ad6580f1ad038b
====== 
re-arrange code to make it clearer what's going on

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T15:56:05Z
Files modified:
* src/main/parser.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/50e9675e31a02e1d114111e517a5d55ff421ae57
====== 
Remove more fixed-size buffers

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T15:48:12Z
Files modified:
* src/modules/rlm_sql/rlm_sql.c
* src/modules/rlm_sql/rlm_sql.h

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/ba6f0840746e4a9320ceab39a80798410ef8ce82
====== 
Remove extraneous strlcpy &amp;amp;&amp;amp; buffer

Alan T. DeKok&amp;lt; at &amp;gt;2013-05-09T15:48:12Z
Files modified:
* src/modules/rlm_sql/rlm_sql.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/f244d250fac1a7d600528ff49ea33d4d068989f3
====== 
Fix wypo in WITH_ macro.  At worst it left an unused label in the code.

skids (via Arran Cudbard-Bell)&amp;lt; at &amp;gt;2013-05-09T07:09:19Z
Files modified:
* src/main/modules.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/288bdd9ecbb6174b2d539efcc9ac34b091fb7325
====== 
Typo in comments

skids (via Arran Cudbard-Bell)&amp;lt; at &amp;gt;2013-05-09T07:09:10Z
Files modified:
* src/main/modules.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/274ca8c272d3d0eb533f2660d876921488761c8b
====== 
Adjust comment to direct users to newer doc file, README.failover nonexistant

skids (via Arran Cudbard-Bell)&amp;lt; at &amp;gt;2013-05-09T07:09:03Z
Files modified:
* src/main/modcall.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/0779e2ae6afc05acb60debeba9eaecbf47f637d6
====== 
Fix typos in comments

skids (via Arran Cudbard-Bell)&amp;lt; at &amp;gt;2013-05-09T07:08:47Z
Files modified:
* src/main/threads.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/c572fec9b4264d221f449617797c3aa83eb40d54
====== 
Remove UNUSED from a used parameter

skids (via Arran Cudbard-Bell)&amp;lt; at &amp;gt;2013-05-09T07:08:29Z
Files modified:
* src/main/mainconfig.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/25acf3a64db5f195a250e4ceee0b3645cb20e57f
====== 
grammar correction in comments

skids (via Arran Cudbard-Bell)&amp;lt; at &amp;gt;2013-05-09T07:08:19Z
Files modified:
* src/main/conffile.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/f5cf9af477234154f21143db8294242f99800424
====== 
Whitespace

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-09T03:21:47Z
Files modified:
* src/modules/rlm_rest/rest.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/3cd48ca221c4680efd792d1d5c6b42e068d4a6f8
====== 
Simpler way to validate URI

Arran Cudbard-Bell&amp;lt; at &amp;gt;2013-05-09T03:17:06Z
Files modified:
* src/modules/rlm_rest/rest.c

Commit diff:
https://github.com/FreeRADIUS/freeradius-server/commit/681c975e216d20f39dc09329b53f49848f8b8615
====== 
&lt;/pre&gt;</description>
    <dc:creator>The git bot</dc:creator>
    <dc:date>2013-05-09T22:00:01</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.freeradius.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.freeradius.devel</link>
  </textinput>
</rdf:RDF>
