libfreeradius usage
Hello, I want to experiment with libfreeradius, but I am having trouble even compiling the main library header. First, the "libradius.h" header uses the "RCSIDH()" macro before including "build.h"[1]. But even with a manual inclusion of "build.h", I get a missing header dependency: $ echo '#include <freeradius/libradius.h>' | gcc -include freeradius/build.h -xc - In file included from /usr/local/include/freeradius/build.h:13, from <command-line>: /usr/local/include/freeradius/autoconf.h:749:10: fatal error: freeradius/automask.h: No such file or directory 749 | #include <freeradius/automask.h> | ^~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. The "automask.h" header is present in the repo[2], but it does not seem to be installed as part of the library headers with "make install". It is also not present in by distribution's package of the library[3]. I tried with v3.2.5 packaged by Debian, and v3.2.6 compiled from source, am I doing something wrong? I have also found a similar issue[4] which states that "autoconf.h" should not be included, and that "missing.h" provides the necessary values. In any case there is a chain of header dependency which currently forces "autoconf.h" to be included so I am not sure how relevant that statement is. libradius.h > build.h > autoconf.h > automask.h I did not find much documentation or examples for this library, feel free to redirect me to the right resources in case I missed them. I am also a bit confused with the relation between libfreeradius and the freeradius-client project, the latter seems basically abandoned but it is not clear to me what the functional differences are between the 2. I hope this is the right place to discuss this. Thank you to anyone willing to help. [1]: https://github.com/FreeRADIUS/freeradius-server/blob/release_3_2_6/src/inclu... [2]: https://github.com/FreeRADIUS/freeradius-server/blob/release_3_2_6/src/inclu... [3]: https://packages.debian.org/trixie/amd64/libfreeradius-dev/filelist [4]: https://github.com/FreeRADIUS/freeradius-server/issues/1412 --- Mathis Marion Software Developper at Silicon Laboratories
On Sep 11, 2024, at 6:10 AM, Mathis Marion <mathis.marion@silabs.com> wrote:
I want to experiment with libfreeradius, but I am having trouble even compiling the main library header. First, the "libradius.h" header uses the "RCSIDH()" macro before including "build.h"[1]. But even with a manual inclusion of "build.h", I get a missing header dependency:
It's not really intended to be built outside of the main server distribution. i.e. it's not a stand-alone library. If you build the whole server, then it will also build libfreeradius.
$ echo '#include <freeradius/libradius.h>' | gcc -include freeradius/build.h -xc - In file included from /usr/local/include/freeradius/build.h:13, from <command-line>: /usr/local/include/freeradius/autoconf.h:749:10: fatal error: freeradius/automask.h: No such file or directory 749 | #include <freeradius/automask.h> | ^~~~~~~~~~~~~~~~~~~~~~~ compilation terminated.
The "automask.h" header is present in the repo[2], but it does not seem to be installed as part of the library headers with "make install". It is also not present in by distribution's package of the library[3]. I tried with v3.2.5 packaged by Debian, and v3.2.6 compiled from source, am I doing something wrong?
Hmm.. maybe that should be installed?
I have also found a similar issue[4] which states that "autoconf.h" should not be included, and that "missing.h" provides the necessary values. In any case there is a chain of header dependency which currently forces "autoconf.h" to be included so I am not sure how relevant that statement is.
libradius.h > build.h > autoconf.h > automask.h
That might need to be installed, too.
I did not find much documentation or examples for this library, feel free to redirect me to the right resources in case I missed them. I am also a bit confused with the relation between libfreeradius and the freeradius-client project, the latter seems basically abandoned but it is not clear to me what the functional differences are between the 2.
FreeRADIUS is the server, which includes libfreeradius. freeradius-client is a separate and stand-alone project which implements a simple RADIUS client. It has about 1% of the functionality of FreeRADIUS. Alan DeKok.
On 11/09/2024 7:14 PM, Alan DeKok wrote:
On Sep 11, 2024, at 6:10 AM, Mathis Marion <mathis.marion@silabs.com> wrote:
I want to experiment with libfreeradius, but I am having trouble even compiling the main library header. First, the "libradius.h" header uses the "RCSIDH()" macro before including "build.h"[1]. But even with a manual inclusion of "build.h", I get a missing header dependency:
It's not really intended to be built outside of the main server distribution. i.e. it's not a stand-alone library.
Good to know, then I wonder why the development headers are being installed, and why a development package is available for the library in Debian, maybe there are historic reasons. To provide a bit of context, I was looking into replacing the RADIUS client of our Wi-SUN border router for Linux[1]. I suppose that the recommended method is to use radclient then? [1]: https://github.com/SiliconLabs/wisun-br-linux
If you build the whole server, then it will also build libfreeradius.
$ echo '#include <freeradius/libradius.h>' | gcc -include freeradius/build.h -xc - In file included from /usr/local/include/freeradius/build.h:13, from <command-line>: /usr/local/include/freeradius/autoconf.h:749:10: fatal error: freeradius/automask.h: No such file or directory 749 | #include <freeradius/automask.h> | ^~~~~~~~~~~~~~~~~~~~~~~ compilation terminated.
The "automask.h" header is present in the repo[2], but it does not seem to be installed as part of the library headers with "make install". It is also not present in by distribution's package of the library[3]. I tried with v3.2.5 packaged by Debian, and v3.2.6 compiled from source, am I doing something wrong?
Hmm.. maybe that should be installed?
I have also found a similar issue[4] which states that "autoconf.h" should not be included, and that "missing.h" provides the necessary values. In any case there is a chain of header dependency which currently forces "autoconf.h" to be included so I am not sure how relevant that statement is.
libradius.h > build.h > autoconf.h > automask.h
That might need to be installed, too.
"autoconf.h" is actually installed, but it pulls "automask.h" which is not.
I did not find much documentation or examples for this library, feel free to redirect me to the right resources in case I missed them. I am also a bit confused with the relation between libfreeradius and the freeradius-client project, the latter seems basically abandoned but it is not clear to me what the functional differences are between the 2.
FreeRADIUS is the server, which includes libfreeradius.
freeradius-client is a separate and stand-alone project which implements a simple RADIUS client. It has about 1% of the functionality of FreeRADIUS.
Thank you for the clarification.
Alan DeKok.
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
On Sep 12, 2024, at 3:54 AM, Mathis Marion <mathis.marion@silabs.com> wrote:
To provide a bit of context, I was looking into replacing the RADIUS client of our Wi-SUN border router for Linux[1]. I suppose that the recommended method is to use radclient then?
For basic RADIUS, freeradius-client is OK. If you want to use more complex RADIUS functionality, then radclient is OK too. But it requires forking, and isn't suitable for anything other than very occasional packets. Alan DeKok.
participants (2)
-
Alan DeKok -
Mathis Marion