MarcJHuber/event-driven-servers

tac_plus issue if-clause / external module inclusion since Apr., 17 2023 (193d7513)

mboehm21 opened this issue · 11 comments

Hi,

this is a follow-up on the previous issue #54.

Our established use-case is as follows:

  1. Access-Requests with username <user>@test123 should be forwarded to customer's RADIUS server 1.2.3.4
  2. All other credentials should be validated against to our openldap.

Configuation snippet:

        #
        # users with realm @test123
        # testmb
        mavis module = external {
                script in  = { if ($USER !~ /^.*\@test123.*$/ ) skip }
                script out = {
                        if ($TYPE == TACPLUS) {
                                if ($TACTYPE == AUTH && $PASSWORD == $DBPASSWORD || $TACTYPE == INFO) {
                                        set $RESULT = ACK
                                        if ($USER =~ /^.*\@test123.*$/ ) {
                                                set $TACPROFILE = "{ member = RO_LIMITED }"
                                        }
                                }
                        }
                }
                exec = /usr/local/sbin/radmavis radmavis "authserver=1.2.3.4:1812:secret"
        }

        #
        # standard users
	mavis module = external {
		setenv LDAP_SERVER_TYPE = "openldap"
		setenv LDAP_HOSTS = "ldap"
                setenv LDAP_CONNECT_TIMEOUT = 2
		setenv LDAP_BASE = "dc=users,dc=com"
		setenv LDAP_FILTER = "(uid=%s)"
		setenv LDAP_FILTER_CHPW = "(uid=%s)"
                # ...
                # truncated - no issue with ldap
	}

Our setup works as expected before commit 193d751:

     1: io_poll (0x557787fe1080) timeout: 7860, res: 1
     1: fd 3 ctx 0x557787fe0c70
     1: fd 3 cb = 0x7f9c937d111c
     1: + spawnd_accepted
     1: - spawnd_accepted
     1: io_sched_exec (0x557787fe1080)
     1: poll_timeout = 3553ms
     1: io_poll (0x557787fe1080) timeout: 3553
    13: io_poll (0x56165a5c61a0) timeout: 60001, res: 1
    13: fd 3 ctx 0x56165a961a10
    13: fd 3 cb = 0x561658847fc8
    13:  io_register 4
    13: io_sched_add 0x56165a97bfe0 60.0
    13: io_sched_exec (0x56165a5c61a0)
    13: poll_timeout = 55118ms
    13: io_poll (0x56165a5c61a0) timeout: 55118
    13: io_poll (0x56165a5c61a0) timeout: 55118, res: 1
    13: fd 4 ctx 0x56165a97bfe0
    13: fd 4 cb = 0x56165884a3d3
    13: io_sched_exec (0x56165a5c61a0)
    13: poll_timeout = 55118ms
    13: io_poll (0x56165a5c61a0) timeout: 55118
    13: io_poll (0x56165a5c61a0) timeout: 55118, res: 1
    13: fd 4 ctx 0x56165a97bfe0
    13: fd 4 cb = 0x5616588499be
    13: io_sched_exec (0x56165a5c61a0)
    13: poll_timeout = 55118ms
    13: io_poll (0x56165a5c61a0) timeout: 55118
    13: io_poll (0x56165a5c61a0) timeout: 55118, res: 1
    13: fd 4 ctx 0x56165a97bfe0
    13: fd 4 cb = 0x56165884a3d3
    13:  av_set(TYPE) = TACPLUS             
    13:  av_set(USER) = test@test123        
    13:  av_set(TIMESTAMP) = -509973301          
    13:  av_set(TACTYPE) = AUTH                
    13:  av_set(SERVERIP) = 127.0.0.1           
    13:  av_set(REALM) = default             
    13:  av_set(PASSWORD) = test                
    13: + mavis_send
    13:   av_set(SERIAL) = jzz0SHFFKUzjRh2T/I1Kjw=
    13:  + external:Mavis_send
    13:    av_get(USER) = test@test123        
    13:    av_get(TYPE) = TACPLUS             
    13:    av_get(SERIAL) = jzz0SHFFKUzjRh2T/I1Kjw=
    13:   starting query on child 0 (jzz0SHFFKUzjRh2T/I1Kjw=)
    13:    av_get(TYPE) = TACPLUS             
    13:    av_get(TIMESTAMP) = -509973301          
    13:    av_get(USER) = test@test123        
    13:    av_get(PASSWORD) = test                
    13:    av_get(SERIAL) = jzz0SHFFKUzjRh2T/I1Kjw=
    13:    av_get(SERVERIP) = 127.0.0.1           
    13:    av_get(REALM) = default             
    13:    av_get(TACTYPE) = AUTH                
    13:   + external:write_to_child
    13:   - external:write_to_child
    13:   io_poll (0x56165a961de0) timeout: -1
     1: io_poll (0x557787fe1080) timeout: 3553, res: 0
     1: io_sched_exec (0x557787fe1080)
     1:  executing ...
     1: + periodics
     1:  io_sched_renew_proc 0x557787fe3590
     1:  to be fired at 649439c5:000dcda3
     1:  servers_cur: 10
     1:  servers_count: 10
     1:  servers_min: 10
     1: - periodics
     1: ... done.
     1:  rescheduled at 649439c5:000dcda3 (10s)
     1: poll_timeout = 10001ms
     1: io_poll (0x557787fe1080) timeout: 10001
    14: io_poll (0x56317bd691a0) timeout: 60001, res: 0
    14: io_sched_exec (0x56317bd691a0)
    14:  executing ...
    14: io_sched_renew_proc 0x56317c104bc0
    14: to be fired at 649439fb:0007a124
    14: ... done.
    14:  rescheduled at 649439fb:0007a124 (60s)
    14: poll_timeout = 60001ms
    14: io_poll (0x56317bd691a0) timeout: 60001
     1: io_poll (0x557787fe1080) timeout: 10001, res: 1
     1: fd 5 ctx 0x557787fe3980
     1: fd 5 cb = 0x7f9c937d4451
     1: io_sched_exec (0x557787fe1080)
     1: poll_timeout = 6405ms
     1: io_poll (0x557787fe1080) timeout: 6405

tcpdump:

root@tn-aaa-ceacs2:~# tcpdump -i any host 1.2.3.4
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
14:08:24.350936 veth53a2f73 P   IP 172.35.199.100.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70
14:08:24.350960 br-295336a56b7f In  IP 172.35.199.100.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70
14:08:24.350999 eth0  Out IP tn-aaa-ceacs2.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70
14:08:29.356157 veth53a2f73 P   IP 172.35.199.100.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70
14:08:29.356169 br-295336a56b7f In  IP 172.35.199.100.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70
14:08:29.356199 eth0  Out IP tn-aaa-ceacs2.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70
14:08:34.361417 veth53a2f73 P   IP 172.35.199.100.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70
14:08:34.361430 br-295336a56b7f In  IP 172.35.199.100.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70
14:08:34.361461 eth0  Out IP tn-aaa-ceacs2.42425 > 1.2.3.4.radius: RADIUS, Access-Request (1), id: 0xa8 length: 70

(please ignore that there is no reply here, as there is no RADIUS in the testlab).

In newer commits (like 8c86061) it seems that the if-statement is skipped and the @test123 users are checked against the LDAP where they are not known:

     1: io_poll (0x55666fe1b080) timeout: 10001, res: 0
     1: io_sched_exec (0x55666fe1b080)
     1:  executing ...
     1: + periodics
     1:  io_sched_renew_proc 0x55666fe1d590
     1:  to be fired at 64944687:000281ae
     1:  servers_cur: 10
     1:  servers_count: 10
     1:  servers_min: 10
     1: - periodics
     1: ... done.
     1:  rescheduled at 64944687:000281ae (10s)
     1: poll_timeout = 10001ms
     1: io_poll (0x55666fe1b080) timeout: 10001
     1: io_poll (0x55666fe1b080) timeout: 10001, res: 1
     1: fd 3 ctx 0x55666fe1ac70
     1: fd 3 cb = 0x7f41123907f1
     1: + spawnd_accepted
     1: - spawnd_accepted
     1: io_sched_exec (0x55666fe1b080)
     1: poll_timeout = 6604ms
     1: io_poll (0x55666fe1b080) timeout: 6604
    13: io_poll (0x5645d72f3960) timeout: 58325, res: 1
    13: fd 3 ctx 0x5645d72fd060
    13: fd 3 cb = 0x5645d585cfdc
    13:  io_register 4
    13: io_sched_add 0x5645d76ab350 60.0
    13: io_sched_exec (0x5645d72f3960)
    13: poll_timeout = 28150ms
    13: io_poll (0x5645d72f3960) timeout: 28150
    13: io_poll (0x5645d72f3960) timeout: 28150, res: 1
    13: fd 4 ctx 0x5645d76ab350
    13: fd 4 cb = 0x5645d585f417
    13: io_sched_exec (0x5645d72f3960)
    13: poll_timeout = 28150ms
    13: io_poll (0x5645d72f3960) timeout: 28150
    13: io_poll (0x5645d72f3960) timeout: 28150, res: 1
    13: fd 4 ctx 0x5645d76ab350
    13: fd 4 cb = 0x5645d585ea02
    13: io_sched_exec (0x5645d72f3960)
    13: poll_timeout = 28150ms
    13: io_poll (0x5645d72f3960) timeout: 28150
    13: io_poll (0x5645d72f3960) timeout: 28150, res: 1
    13: fd 4 ctx 0x5645d76ab350
    13: fd 4 cb = 0x5645d585f417
    13:  av_set(TYPE) = TACPLUS             
    13:  av_set(USER) = test@test123        
    13:  av_set(TIMESTAMP) = 1695758164          
    13:  av_set(TACTYPE) = AUTH                
    13:  av_set(SERVERIP) = 127.0.0.1           
    13:  av_set(REALM) = default             
    13:  av_set(PASSWORD) = test                
    13: + mavis_send
    13:   av_set(SERIAL) = 6AOl22pt0ZHOK9kIzEMEcA=
    13:  + external:Mavis_send
    13:    av_get(USER) = test@test123        
0/line 55: [!] => true
0/line 55: [skip]
    13:   + external:Mavis_send
    13:     av_get(TYPE) = TACPLUS             
    13:     av_get(SERIAL) = 6AOl22pt0ZHOK9kIzEMEcA=
    13:    starting query on child 0 (6AOl22pt0ZHOK9kIzEMEcA=)
    13:     av_get(TYPE) = TACPLUS             
    13:     av_get(TIMESTAMP) = 1695758164          
    13:     av_get(USER) = test@test123        
    13:     av_get(PASSWORD) = test                
    13:     av_get(SERIAL) = 6AOl22pt0ZHOK9kIzEMEcA=
    13:     av_get(SERVERIP) = 127.0.0.1           
    13:     av_get(REALM) = default             
    13:     av_get(TACTYPE) = AUTH                
    13:    + external:write_to_child
    13:    - external:write_to_child
    13:   - external:Mavis_send = 1
    13:  - external:Mavis_send = 1
    13: - mavis_send (1)
    13: io_sched_exec (0x5645d72f3960)
    13: poll_timeout = 28150ms
    13: io_poll (0x5645d72f3960) timeout: 28150
    13: io_poll (0x5645d72f3960) timeout: 28150, res: 1
    13: fd 18 ctx 0x7f81ba901010
    13: fd 18 cb = 0x7f81ba9b43cd
    13: + external:read_from_child
    13:  /tmp/event-driven-servers/mavis/libmavis_external.c:448 /usr/local/lib/mavis/mavis_tacplus_ldap.pl
    13:   av_get(SERIAL) = 6AOl22pt0ZHOK9kIzEMEcA=
    13:  + av_clear
    13:  - av_clear
    13:   av_set(TYPE) = TACPLUS             
    13:   av_get(TYPE) = TACPLUS             
    13:   av_set(TIMESTAMP) = 1695758164          
    13:   av_get(TIMESTAMP) = 1695758164          
    13:   av_set(USER) = test@test123        
    13:   av_get(USER) = test@test123        
    13:   av_set(RESULT) = NFD                 
    13:   av_get(RESULT) = NFD                 
    13:   av_set(PASSWORD) = test                
    13:   av_get(PASSWORD) = test                
    13:   av_set(SERIAL) = 6AOl22pt0ZHOK9kIzEMEcA=
    13:   av_get(SERIAL) = 6AOl22pt0ZHOK9kIzEMEcA=
    13:   av_set(SERVERIP) = 127.0.0.1           
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_set(REALM) = default             
    13:   av_get(REALM) = default             
    13:   av_set(TACTYPE) = AUTH                
    13:   av_get(TACTYPE) = AUTH                
    13:   av_get(SERIAL) = 6AOl22pt0ZHOK9kIzEMEcA=
    13:  + mavis_recv
    13:   + external:Mavis_recv
    13:    + external:mavis_recv_in
    13:    - external:mavis_recv_in
    13:    + external:Mavis_recv
    13:     + external:mavis_recv_in
    13:       av_set(CURRENT_MODULE) = 1                   
    13:      + mavis_send
    13:        av_get(CURRENT_MODULE) = 1                   
    13:       + external:Mavis_send
    13:         av_get(CURRENT_MODULE) = 1                   
    13:        + external:Mavis_send
    13:          av_set(CURRENT_MODULE) = (NULL)              
    13:        - external:Mavis_send = 0
    13:         av_get(TYPE) = TACPLUS             
0/line 57: [<unknown>] $TYPE = 'TACPLUS' => true
    13:         av_get(TACTYPE) = AUTH                
0/line 58: [<unknown>] $TACTYPE = 'AUTH' => true
    13:         av_get(PASSWORD) = test                
0/line 58: [attribute] $PASSWORD = '$DBPASSWORD' => false
0/line 58: [&&] => false
    13:         av_get(TACTYPE) = AUTH                
0/line 58: [<unknown>] $TACTYPE = 'INFO' => false
0/line 58: [||] => false
    13:       - external:Mavis_send = 0
    13:      - mavis_send (0)
    13:     - external:mavis_recv_in
    13:    - external:Mavis_recv = 4
    13:   - external:Mavis_recv = 4
    13:  - mavis_recv
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(USER) = test@test123        
    13:   av_get(TIMESTAMP) = 1695758164          
    13:   av_get(RESULT) = NFD                 
    13:  + buffer_write
    13:   buffer_get = 0x5645d769a310
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:   buffer_get = 0x5645d76a2350
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
2023-06-22 15:02:56 +0200	127.0.0.1	test@test123	python_tty0	python_device	shell login failed (no such user)
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13:  + buffer_write
    13:  - buffer_write
    13: - external:read_from_child
    13: io_sched_exec (0x5645d72f3960)
    13: poll_timeout = 28081ms
    13: io_poll (0x5645d72f3960) timeout: 28081
    13: io_poll (0x5645d72f3960) timeout: 28081, res: 3
    13: fd 4 ctx 0x5645d76ab350
    13: fd 4 cb = 0x5645d585ea02
    13: fd 28 ctx 0x5645d7699210
    13: fd 28 cb = 0x5645d5861102
    13: buffer_release (0x5645d769a310, 109)
    13: buffer_free (0x5645d769a310)
    13: buffer_release = (nil)
    13: fd 30 ctx 0x5645d7699260
    13: fd 30 cb = 0x5645d5861102
    13: buffer_release (0x5645d76a2350, 109)
    13: buffer_free (0x5645d76a2350)
    13: buffer_release = (nil)
    13: io_sched_exec (0x5645d72f3960)
    13: poll_timeout = 28081ms
    13: io_poll (0x5645d72f3960) timeout: 28081
    13: io_poll (0x5645d72f3960) timeout: 28081, res: 1
    13: fd 4 ctx 0x5645d76ab350
    13: fd 4 cb = 0x5645d585f417
    13: + io_sched_pop
    13: - io_sched_pop
    13:  io_unregister 4
    13: io_sched_exec (0x5645d72f3960)
    13: poll_timeout = 28077ms
    13: io_poll (0x5645d72f3960) timeout: 28077
     1: io_poll (0x55666fe1b080) timeout: 6604, res: 1
     1: fd 4 ctx 0x55666fe1d890
     1: fd 4 cb = 0x7f4112393b26
     1: io_sched_exec (0x55666fe1b080)
     1: poll_timeout = 6531ms
     1: io_poll (0x55666fe1b080) timeout: 6531

No RADIUS requests are sent to 1.2.3.4 in this case.

What further output do you need to troubleshoot?

Thanks a lot.

Hi,

thanks for clarifying that issue. Alas, I'm still unable to reproduce it. I did a couple of tests on my system without seeing anything weird.

One remarkable difference is that my compile shows a different output for the script in = { if ($USER !~ /^.*\@test123.*$/ ) skip } PCRE regex. I see

151376:  + external:Mavis_send
151376:    av_get(USER) = ubuntu@test123
0/line 23: [<unknown>] $USER <pcre-regex> '^.*\@test123.*$' => true
0/line 23: [!] => false

but your built prints

    13:  + external:Mavis_send
    13:    av_get(USER) = test@test123        
0/line 55: [!] => true
0/line 55: [skip]

(I can only guess that the "if" condition is in line 55, but I've seen no other "skip".)

Did you build with PCRE2 or PCRE? I can no longer test the latter an will remove support soon. Plus, is this the current GIT? I'd have expected to see the PCRE matching details, but these aren't included.

Thanks,

Marc

Hi Marc,

thanks for your answer. You were right, we were still using PCRE which seems to be no longer functional (at least not for our use-case).

I changed to ./configure --debug --with-pcre2 --with-freeradius and the first tests show that the regex match is working with the latest commit, I need to perform some more tests tomorrow, though.

     1: io_poll (0x55a570a5c080) timeout: 10001, res: 1
     1: fd 3 ctx 0x55a570a5bc70
     1: fd 3 cb = 0x7fc158b53962
     1: + spawnd_accepted
     1: - spawnd_accepted
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 1800ms
     1: io_poll (0x55a570a5c080) timeout: 1800
    13: io_poll (0x557855207960) timeout: 24723, res: 1
    13: fd 3 ctx 0x5578555af040
    13: fd 3 cb = 0x557853f3c363
    13:  io_register 4
    13: io_sched_add 0x557855211d30 60.0
    13: io_sched_exec (0x557855207960)
    13: poll_timeout = 3768ms
    13: io_poll (0x557855207960) timeout: 3768
    13: io_poll (0x557855207960) timeout: 3768, res: 1
    13: fd 4 ctx 0x557855211d30
    13: fd 4 cb = 0x557853f3e79e
    13: io_sched_exec (0x557855207960)
    13: poll_timeout = 3768ms
    13: io_poll (0x557855207960) timeout: 3768
    13: io_poll (0x557855207960) timeout: 3768, res: 1
    13: fd 4 ctx 0x557855211d30
    13: fd 4 cb = 0x557853f3dd89
    13: io_sched_exec (0x557855207960)
    13: poll_timeout = 3767ms
    13: io_poll (0x557855207960) timeout: 3767
    13: io_poll (0x557855207960) timeout: 3767, res: 1
    13: fd 4 ctx 0x557855211d30
    13: fd 4 cb = 0x557853f3e79e
    13:  av_set(TYPE) = TACPLUS             
    13:  av_set(USER) = test@test123        
    13:  av_set(TIMESTAMP) = -562580294          
    13:  av_set(TACTYPE) = AUTH                
    13:  av_set(SERVERIP) = 127.0.0.1           
    13:  av_set(REALM) = default             
    13:  av_set(PASSWORD) = test                
    13: + mavis_send
    13:   av_set(SERIAL) = 4pgGxBjuVFKRa6BtQ3iAQQ=
    13:  + external:Mavis_send
    13:    av_get(USER) = test@test123        
0/line 55: [<unknown>] $USER <pcre-regex> '^.*\@test123.*$' => true
0/line 55: [!] => false
    13:    av_get(TYPE) = TACPLUS             
    13:    av_get(SERIAL) = 4pgGxBjuVFKRa6BtQ3iAQQ=
    13:   starting query on child 0 (4pgGxBjuVFKRa6BtQ3iAQQ=)
    13:    av_get(TYPE) = TACPLUS             
    13:    av_get(TIMESTAMP) = -562580294          
    13:    av_get(USER) = test@test123        
    13:    av_get(PASSWORD) = test                
    13:    av_get(SERIAL) = 4pgGxBjuVFKRa6BtQ3iAQQ=
    13:    av_get(SERVERIP) = 127.0.0.1           
    13:    av_get(REALM) = default             
    13:    av_get(TACTYPE) = AUTH                
    13:   + external:write_to_child
    13:   - external:write_to_child
    13:  - external:Mavis_send = 1
    13: - mavis_send (1)
    13: io_sched_exec (0x557855207960)
    13: poll_timeout = 3766ms
    13: io_poll (0x557855207960) timeout: 3766
     1: io_poll (0x55a570a5c080) timeout: 1800, res: 1
     1: fd 3 ctx 0x55a570a5bc70
     1: fd 3 cb = 0x7fc158b53962
     1: + spawnd_accepted
     1: - spawnd_accepted
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 409ms
     1: io_poll (0x55a570a5c080) timeout: 409
    14: io_poll (0x563d0057f960) timeout: 59970, res: 1
    14: fd 3 ctx 0x563d00927040
    14: fd 3 cb = 0x563cfee13363
    14:  io_register 4
    14: io_sched_add 0x563d005897b0 60.0
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2313ms
    14: io_poll (0x563d0057f960) timeout: 2313
    14: io_poll (0x563d0057f960) timeout: 2313, res: 1
    14: fd 4 ctx 0x563d005897b0
    14: fd 4 cb = 0x563cfee1579e
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2313ms
    14: io_poll (0x563d0057f960) timeout: 2313
    14: io_poll (0x563d0057f960) timeout: 2313, res: 1
    14: fd 4 ctx 0x563d005897b0
    14: fd 4 cb = 0x563cfee14d89
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2313ms
    14: io_poll (0x563d0057f960) timeout: 2313
    14: io_poll (0x563d0057f960) timeout: 2313, res: 1
    14: fd 4 ctx 0x563d005897b0
    14: fd 4 cb = 0x563cfee1579e
    14:  io_register 28
    14:  io_register 30
    14: + buffer_write
    14:  buffer_get = 0x563d00928390
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14:  buffer_get = 0x563d009303d0
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
2023-06-22 22:40:06 +0200	127.0.0.1	healthcheck	python_tty0	python_device	shell login succeeded
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2312ms
    14: io_poll (0x563d0057f960) timeout: 2312
    14: io_poll (0x563d0057f960) timeout: 2312, res: 3
    14: fd 30 ctx 0x563d00589cd0
    14: fd 30 cb = 0x563cfee17489
    14: buffer_release (0x563d009303d0, 96)
    14: buffer_free (0x563d009303d0)
    14: buffer_release = (nil)
    14: fd 28 ctx 0x563d00589c80
    14: fd 28 cb = 0x563cfee17489
    14: buffer_release (0x563d00928390, 96)
    14: buffer_free (0x563d00928390)
    14: buffer_release = (nil)
    14: fd 4 ctx 0x563d005897b0
    14: fd 4 cb = 0x563cfee14d89
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2311ms
    14: io_poll (0x563d0057f960) timeout: 2311
    14: io_poll (0x563d0057f960) timeout: 2311, res: 1
    14: fd 4 ctx 0x563d005897b0
    14: fd 4 cb = 0x563cfee1579e
    14: + io_sched_pop
    14: - io_sched_pop
    14:  io_unregister 4
     1: io_poll (0x55a570a5c080) timeout: 409, res: 1
     1: fd 5 ctx 0x55a570a5e980
     1: fd 5 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 405ms
     1: io_poll (0x55a570a5c080) timeout: 405
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2310ms
    14: io_poll (0x563d0057f960) timeout: 2310
     1: io_poll (0x55a570a5c080) timeout: 405, res: 1
     1: fd 3 ctx 0x55a570a5bc70
     1: fd 3 cb = 0x7fc158b53962
     1: + spawnd_accepted
     1: - spawnd_accepted
    14: io_poll (0x563d0057f960) timeout: 2310, res: 1
    14: fd 3 ctx 0x563d00927040
    14: fd 3 cb = 0x563cfee13363
    14:  io_register 4
    14: io_sched_add 0x563d00589d30 60.0
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2235ms
    14: io_poll (0x563d0057f960) timeout: 2235
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 329ms
    14: io_poll (0x563d0057f960) timeout: 2235, res: 1
     1: io_poll (0x55a570a5c080) timeout: 329
    14: fd 4 ctx 0x563d00589d30
    14: fd 4 cb = 0x563cfee1579e
    14:  io_register 31
    14: + buffer_write
    14:  buffer_get = 0x563d00928390
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14:  buffer_get = 0x563d009303d0
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2221ms
    14: io_poll (0x563d0057f960) timeout: 2221
    14: io_poll (0x563d0057f960) timeout: 2221, res: 3
    14: fd 31 ctx 0x563d0058a1e0
    14: fd 31 cb = 0x563cfee17489
    14: buffer_release (0x563d009303d0, 105)
    14: buffer_free (0x563d009303d0)
    14: buffer_release = (nil)
    14: fd 4 ctx 0x563d00589d30
    14: fd 4 cb = 0x563cfee14d89
    14: fd 28 ctx 0x563d00589c80
    14: fd 28 cb = 0x563cfee17489
    14: buffer_release (0x563d00928390, 105)
    14: buffer_free (0x563d00928390)
    14: buffer_release = (nil)
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2218ms
    14: io_poll (0x563d0057f960) timeout: 2218
    14: io_poll (0x563d0057f960) timeout: 2218, res: 1
    14: fd 4 ctx 0x563d00589d30
    14: fd 4 cb = 0x563cfee1579e
    14: + io_sched_pop
    14: - io_sched_pop
    14:  io_unregister 4
    14: io_sched_exec (0x563d0057f960)
     1: io_poll (0x55a570a5c080) timeout: 329, res: 1
     1: fd 5 ctx 0x55a570a5e980
     1: fd 5 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 313ms
     1: io_poll (0x55a570a5c080) timeout: 313
    14: poll_timeout = 2218ms
    14: io_poll (0x563d0057f960) timeout: 2218
2023-06-22 22:40:06 +0200	127.0.0.1	healthcheck/healthcheck_group	python_tty0	python_device	permit	exit	
     1: io_poll (0x55a570a5c080) timeout: 313, res: 1
     1: fd 3 ctx 0x55a570a5bc70
     1: fd 3 cb = 0x7fc158b53962
     1: + spawnd_accepted
     1: - spawnd_accepted
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 243ms
     1: io_poll (0x55a570a5c080) timeout: 243
    14: io_poll (0x563d0057f960) timeout: 2218, res: 1
    14: fd 3 ctx 0x563d00927040
    14: fd 3 cb = 0x563cfee13363
    14:  io_register 4
    14: io_sched_add 0x563d00938410 60.0
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2147ms
    14: io_poll (0x563d0057f960) timeout: 2147
    14: io_poll (0x563d0057f960) timeout: 2147, res: 1
    14: fd 4 ctx 0x563d00938410
    14: fd 4 cb = 0x563cfee1579e
    14:  io_register 32
    14: + buffer_write
    14:  buffer_get = 0x563d00928390
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14:  buffer_get = 0x563d009303d0
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: + buffer_write
    14: - buffer_write
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2145ms
    14: io_poll (0x563d0057f960) timeout: 2145
    14: io_poll (0x563d0057f960) timeout: 2145, res: 3
    14: fd 32 ctx 0x563d007dd690
    14: fd 32 cb = 0x563cfee17489
    14: buffer_release (0x563d009303d0, 90)
    14: buffer_free (0x563d009303d0)
    14: buffer_release = (nil)
    14: fd 4 ctx 0x563d00938410
    14: fd 4 cb = 0x563cfee14d89
2023-06-22 22:40:07 +0200	127.0.0.1	healthcheck	python_tty0	python_device	start	heartbeat
    14: fd 28 ctx 0x563d00589c80
    14: fd 28 cb = 0x563cfee17489
    14: buffer_release (0x563d00928390, 90)
    14: buffer_free (0x563d00928390)
    14: buffer_release = (nil)
    14: io_sched_exec (0x563d0057f960)
    14: poll_timeout = 2143ms
    14: io_poll (0x563d0057f960) timeout: 2143
    14: io_poll (0x563d0057f960) timeout: 2143, res: 1
    14: fd 4 ctx 0x563d00938410
    14: fd 4 cb = 0x563cfee1579e
    14: + io_sched_pop
    14: - io_sched_pop
    14:  io_unregister 4
    14: io_sched_exec (0x563d0057f960)
     1: io_poll (0x55a570a5c080) timeout: 243, res: 1
     1: fd 5 ctx 0x55a570a5e980
     1: fd 5 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 237ms
     1: io_poll (0x55a570a5c080) timeout: 237
    14: poll_timeout = 2142ms
    14: io_poll (0x563d0057f960) timeout: 2142
     1: io_poll (0x55a570a5c080) timeout: 237, res: 0
     1: io_sched_exec (0x55a570a5c080)
     1:  executing ...
     1: + periodics
     1:  io_sched_renew_proc 0x55a570a5e590
     1:  to be fired at 6494b1b1:00047cf8
     1:  servers_cur: 10
     1:  servers_count: 10
     1:  servers_min: 10
     1: - periodics
     1: ... done.
     1:  rescheduled at 6494b1b1:00047cf8 (10s)
     1: poll_timeout = 10001ms
     1: io_poll (0x55a570a5c080) timeout: 10001
    15: io_poll (0x560f04f83960) timeout: 59998, res: 0
    15: io_sched_exec (0x560f04f83960)
    15:  executing ...
    15: io_sched_renew_proc 0x560f0532b1f0
    15: to be fired at 6494b1e4:000e873d
    15: ... done.
    15:  rescheduled at 6494b1e4:000e873d (60s)
    15: poll_timeout = 60001ms
    15: io_poll (0x560f04f83960) timeout: 60001
     1: io_poll (0x55a570a5c080) timeout: 10001, res: 1
     1: fd 6 ctx 0x55a570a5ea70
     1: fd 6 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 8342ms
     1: io_poll (0x55a570a5c080) timeout: 8342
    19: io_poll (0x55576f5fb960) timeout: 59986, res: 0
    19: io_sched_exec (0x55576f5fb960)
    19:  executing ...
    19: io_sched_renew_proc 0x55576f9a31f0
    19: to be fired at 6494b1e5:00018c67
    19: ... done.
    19:  rescheduled at 6494b1e5:00018c67 (60s)
    19: poll_timeout = 60001ms
    19: io_poll (0x55576f5fb960) timeout: 60001
     1: io_poll (0x55a570a5c080) timeout: 8342, res: 1
     1: fd 10 ctx 0x55a570a5ee30
     1: fd 10 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 8193ms
     1: io_poll (0x55a570a5c080) timeout: 8193
    16: io_poll (0x55dc09613960) timeout: 59993, res: 0
    16: io_sched_exec (0x55dc09613960)
    16:  executing ...
    16: io_sched_renew_proc 0x55dc099bb1f0
    16: to be fired at 6494b1e5:000261ce
    16: ... done.
    16:  rescheduled at 6494b1e5:000261ce (60s)
    16: poll_timeout = 60001ms
    16: io_poll (0x55dc09613960) timeout: 60001
     1: io_poll (0x55a570a5c080) timeout: 8193, res: 1
     1: fd 7 ctx 0x55a570a5eb60
     1: fd 7 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 8138ms
     1: io_poll (0x55a570a5c080) timeout: 8138
    14: io_poll (0x563d0057f960) timeout: 2142, res: 0
    14: io_sched_exec (0x563d0057f960)
    14:  executing ...
    14: io_sched_renew_proc 0x563d009271f0
    14: to be fired at 6494b1e5:00031273
    14: ... done.
    14:  rescheduled at 6494b1e5:00031273 (60s)
    14: poll_timeout = 60001ms
    14: io_poll (0x563d0057f960) timeout: 60001
     1: io_poll (0x55a570a5c080) timeout: 8138, res: 1
     1: fd 5 ctx 0x55a570a5e980
     1: fd 5 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 8093ms
     1: io_poll (0x55a570a5c080) timeout: 8093
    17: io_poll (0x55ee0b33c960) timeout: 59969, res: 0
    17: io_sched_exec (0x55ee0b33c960)
    17:  executing ...
    17: io_sched_renew_proc 0x55ee0b6e41f0
    17: to be fired at 6494b1e5:0003c7c5
    17: ... done.
    17:  rescheduled at 6494b1e5:0003c7c5 (60s)
    17: poll_timeout = 60001ms
    17: io_poll (0x55ee0b33c960) timeout: 60001
    20: io_poll (0x55d242f2d960) timeout: 59993, res: 0
    20: io_sched_exec (0x55d242f2d960)
    20:  executing ...
    20: io_sched_renew_proc 0x55d2432d51f0
    20: to be fired at 6494b1e5:0003c898
     1: io_poll (0x55a570a5c080) timeout: 8093, res: 1
     1: fd 8 ctx 0x55a570a5ec50
     1: fd 8 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 8047ms
     1: io_poll (0x55a570a5c080) timeout: 8047
     1: io_poll (0x55a570a5c080) timeout: 8047, res: 1
     1: fd 11 ctx 0x55a570a5ef20
     1: fd 11 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 8046ms
     1: io_poll (0x55a570a5c080) timeout: 8046
    20: ... done.
    20:  rescheduled at 6494b1e5:0003c898 (60s)
    20: poll_timeout = 60001ms
    20: io_poll (0x55d242f2d960) timeout: 60001
    13: io_poll (0x557855207960) timeout: 3766, res: 0
    13: io_sched_exec (0x557855207960)
    13:  executing ...
    13: io_sched_renew_proc 0x5578555af1f0
    13: to be fired at 6494b1e5:000410ca
    13: ... done.
    13:  rescheduled at 6494b1e5:000410ca (60s)
    13: poll_timeout = 56229ms
    13: io_poll (0x557855207960) timeout: 56229
     1: io_poll (0x55a570a5c080) timeout: 8046, res: 1
     1: fd 4 ctx 0x55a570a5e890
     1: fd 4 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 8028ms
     1: io_poll (0x55a570a5c080) timeout: 8028
    22: io_poll (0x564deee68960) timeout: 59981, res: 0
    22: io_sched_exec (0x564deee68960)
    22:  executing ...
    22: io_sched_renew_proc 0x564def2101f0
    22: to be fired at 6494b1e5:000c2ce8
    22: ... done.
    22:  rescheduled at 6494b1e5:000c2ce8 (60s)
    22: poll_timeout = 60001ms
    22: io_poll (0x564deee68960) timeout: 60001
     1: io_poll (0x55a570a5c080) timeout: 8028, res: 1
     1: fd 13 ctx 0x55a570a5f100
     1: fd 13 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 7498ms
     1: io_poll (0x55a570a5c080) timeout: 7498
    21: io_poll (0x5585c9e52960) timeout: 59994, res: 0
    21: io_sched_exec (0x5585c9e52960)
    21:  executing ...
    21: io_sched_renew_proc 0x5585ca1fa1f0
    21: to be fired at 6494b1e5:000cec07
    21: ... done.
    21:  rescheduled at 6494b1e5:000cec07 (60s)
    21: poll_timeout = 60001ms
    21: io_poll (0x5585c9e52960) timeout: 60001
     1: io_poll (0x55a570a5c080) timeout: 7498, res: 1
     1: fd 12 ctx 0x55a570a5f010
     1: fd 12 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 7448ms
     1: io_poll (0x55a570a5c080) timeout: 7448
    18: io_poll (0x557b200c7960) timeout: 59997, res: 0
    18: io_sched_exec (0x557b200c7960)
    18:  executing ...
    18: io_sched_renew_proc 0x557b2046f1f0
    18: to be fired at 6494b1e5:000d102c
    18: ... done.
    18:  rescheduled at 6494b1e5:000d102c (60s)
    18: poll_timeout = 60001ms
    18: io_poll (0x557b200c7960) timeout: 60001
     1: io_poll (0x55a570a5c080) timeout: 7448, res: 1
     1: fd 9 ctx 0x55a570a5ed40
     1: fd 9 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 7438ms
     1: io_poll (0x55a570a5c080) timeout: 7438
    13: io_poll (0x557855207960) timeout: 56229, res: 1
    13: fd 4 ctx 0x557855211d30
    13: fd 4 cb = 0x557853f3e79e
    13: + io_sched_pop
    13: - io_sched_pop
    13:  io_unregister 4
    13: + mavis_cancel
    13:  + external:Mavis_cancel
    13:   + external:Mavis_cancel
    13:   - external:Mavis_cancel = 0
    13:  - external:Mavis_cancel = 0
    13: - mavis_cancel (0)
    13: io_sched_exec (0x557855207960)
    13: poll_timeout = 53759ms
    13: io_poll (0x557855207960) timeout: 53759
     1: io_poll (0x55a570a5c080) timeout: 7438, res: 1
     1: fd 4 ctx 0x55a570a5e890
     1: fd 4 cb = 0x7fc158b56c97
     1: io_sched_exec (0x55a570a5c080)
     1: poll_timeout = 1787ms
     1: io_poll (0x55a570a5c080) timeout: 1787

This is what our working Dockerfile looks like now:

ARG DEB_LIBFREERADIUS_DEV="http://archive.ubuntu.com/ubuntu/pool/universe/f/freeradius-client/libfreeradius-client-dev_1.1.6-7_amd64.deb"
ARG DEB_LIBFREERADIUS="http://archive.ubuntu.com/ubuntu/pool/universe/f/freeradius-client/libfreeradius-client2_1.1.6-7_amd64.deb"
ARG DEB_MULTIARCH="http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1.5_amd64.deb"
ARG SOURCE_REPOSITORY="https://github.com/MarcJHuber/event-driven-servers.git"
ARG SOURCE_BRANCH="master"
ARG TAC_PLUS_PROJECT="tac_plus"
ARG TAC_PLUS_USER_NAME="${TAC_PLUS_PROJECT}"
ARG TAC_PLUS_GROUP_NAME="${TAC_PLUS_PROJECT}"
ARG TAC_PLUS_UID=999
ARG TAC_PLUS_GID=999

FROM ubuntu:jammy as compiler

ARG DEB_LIBFREERADIUS_DEV
ARG DEB_LIBFREERADIUS
ARG DEB_MULTIARCH
ARG SOURCE_REPOSITORY
ARG SOURCE_BRANCH
ARG TAC_PLUS_PROJECT

USER root:root

WORKDIR /tmp/
RUN apt-get update && \
    apt-get dist-upgrade -y && \
    apt-get install -y \
      build-essential \
      git \
      wget \
      libpcre2-dev && \
    wget ${DEB_LIBFREERADIUS_DEV} \
         ${DEB_LIBFREERADIUS} \
         ${DEB_MULTIARCH} && \
    dpkg -i multiarch-*.deb && \
    dpkg -i libfreeradius-*.deb && \
    rm -rf /tmp/* && \
    apt-get clean -y && \
    apt-get autoremove -y && \
    rm -rf /var/lib/apt/lists/ && \
    rm -rf /var/log/apt/ && \
    git clone --depth 1 -b ${SOURCE_BRANCH} ${SOURCE_REPOSITORY} && \
    cd event-driven-servers/ && \
    ./configure --debug --with-pcre2 --with-freeradius ${TAC_PLUS_PROJECT} && \
    make && \
    make install && \
    /usr/local/sbin/${TAC_PLUS_PROJECT} -v && \
    rm -rf build/linux-*/fakeroot/usr/local/etc/mavis/* && \
    rm -rf build/linux-*/fakeroot/usr/local/share/mavis/* && \
    chmod -R o-rwx build/linux-*/fakeroot/ && \
    mv build/linux-*/fakeroot/ /

COPY --chmod=0640 etc/${TAC_PLUS_PROJECT}_sample.cfg /fakeroot/usr/local/etc/mavis/${TAC_PLUS_PROJECT}.cfg
COPY --chmod=0750 lib/* /fakeroot/usr/local/lib/mavis/

# Fix build in kaniko

RUN chmod 0640 /fakeroot/usr/local/etc/mavis/* && \
    chmod 0750 /fakeroot/usr/local/lib/mavis/*

FROM ubuntu:jammy

ARG DEB_LIBFREERADIUS
ARG DEB_MULTIARCH
ARG TAC_PLUS_PROJECT
ARG TAC_PLUS_USER_NAME
ARG TAC_PLUS_GROUP_NAME
ARG TAC_PLUS_UID
ARG TAC_PLUS_GID

ENV TAC_PLUS_DEBUG_LEVEL=15
ENV TAC_PLUS_CONFIG_FILE="/usr/local/etc/mavis/${TAC_PLUS_PROJECT}.cfg"
ENV HEALTHCHECK_USER_NAME="healthcheck"
ENV HEALTHCHECK_USER_PASSWORD="changeme"
ENV HEALTHCHECK_SHARED_SECRET="changeme"
ENV HEALTHCHECK_AUTH_CMD="healthcheck"
ENV HEALTHCHECK_STDOUT="/proc/1/fd/1"
ENV TAC_PLUS_PROJECT="${TAC_PLUS_PROJECT}"

USER root:root

RUN apt-get update && \
    apt-get dist-upgrade -y && \
    apt-get install -y \
      --no-install-recommends \
      wget \
      python3.10-minimal \
      python3-pip \
      libnet-ldap-perl \
      libio-socket-ssl-perl && \
    pip3 install tacacs-plus && \
    cd /tmp/ && \
    wget ${DEB_LIBFREERADIUS} \
         ${DEB_MULTIARCH} && \
    dpkg -i multiarch-*.deb && \
    dpkg -i libfreeradius-*.deb && \
    rm -rf /tmp/* && \
    apt-get purge -y \
      wget \
      python3-pip \
      python3.10 && \
    apt-get clean -y && \
    apt-get autoremove -y && \
    rm -rf /var/lib/apt/lists/ && \
    rm -rf /var/log/apt/ && \
    ln -s /usr/bin/python3.10 /usr/bin/python3 && \
    ln -s /etc/radiusclient/ /usr/local/etc/radiusclient && \
    groupadd -r -g ${TAC_PLUS_GID} ${TAC_PLUS_GROUP_NAME} && \
    useradd -r -u ${TAC_PLUS_UID} -g ${TAC_PLUS_GID} -s /usr/sbin/nologin ${TAC_PLUS_USER_NAME} && \
    userdel -r -f cloud && \
    bash -c "mkdir -p /var/log/${TAC_PLUS_PROJECT}/{access,acct,auth}" && \
    chown -R ${TAC_PLUS_USER_NAME}:${TAC_PLUS_GROUP_NAME} /var/log/${TAC_PLUS_PROJECT}/ && \
    chmod -R 0744 /var/log/${TAC_PLUS_PROJECT}/

COPY --from=compiler --chown=${TAC_PLUS_USER_NAME}:${TAC_PLUS_GROUP_NAME} /fakeroot/ /fakeroot/
COPY --chown=${TAC_PLUS_USER_NAME}:${TAC_PLUS_GROUP_NAME} --chmod=0700 bin/entrypoint.sh /
COPY --chown=${TAC_PLUS_USER_NAME}:${TAC_PLUS_GROUP_NAME} --chmod=0700 bin/healthcheck.sh /

RUN mv /fakeroot/usr/local/bin/* /usr/local/bin/ && \
    mv /fakeroot/usr/local/sbin/* /usr/local/sbin/ && \
    mv /fakeroot/usr/local/lib/* /usr/local/lib/ && \
    mv /fakeroot/usr/local/lib64/ /usr/local/ && \
    mv /fakeroot/usr/local/etc/* /usr/local/etc/ && \
    rm -rf /fakeroot/

# Fix build in kaniko

RUN chmod 0700 /*.sh

ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 4949

HEALTHCHECK \
  --interval=1m \
  --timeout=5s \
  --start-period=10s \
  --retries=1 \
  CMD /healthcheck.sh

USER ${TAC_PLUS_USER_NAME}:${TAC_PLUS_GROUP_NAME}

Another somewhat unrelated question: Is there some better way to get this to work instead of pulling the .deb-dependencies for libfreeradius-client and multiarch from the Ubuntu archives (see the first three lines of the Dockerfile)? I could not found anything in the Ubuntu jammy repos.

Thanks for your great work as always an best wishes

Michael

Hi Michael,

thanks for testing this once more :-)

You can easily replace libfreeradius-client with libradcli-dev, which is supported by Ubuntu. I'm not sure how those packages are related, but they share the same API.

Cheers,

Marc

Hi Marc,

thanks for your hint. I tried to replace libfreeradius-client with libradcli-dev.

    apt-get install -y \
      build-essential \
      git \
      libradcli4 \
      libradcli-dev \
      libpcre2-dev

However, there are errors while compiling:

#0 91.98 HEAD is now at 8c86061 mavis: adjust -V output
#0 92.00 ===============================================================================
#0 92.02 Development files were not found for: LIB-ARES, LIB-CRYPTO, LIB-CURL, 
#0 92.02 LIB-LWRES, LIB-PAM, LIB-SCTP, LIB-SSL, LIB-TLS, LIB-ZLIB
#0 92.02 
#0 92.02 Development files were found for: LIB-CRYPT, LIB-PCRE2, LIB-RADCLI
#0 92.02 
#0 92.02 The file
#0 92.02 
#0 92.02     build/Makefile.inc.linux-5.19.0-45-generic-x86_64
#0 92.02 
#0 92.02 was just created. You may run "make" now. After that, you may wish to do a 
#0 92.02 "make install". Alternatively, you'll find the compiled binaries (plus some 
#0 92.02 ancillary scripts) in the
#0 92.02 
#0 92.02     build/linux-5.19.0-45-generic-x86_64/fakeroot/
#0 92.02 
#0 92.02 directory structure. It's probably advisable to have a look there in any case,
#0 92.02 as you may or may not like the particular file system layout, and this will 
#0 92.02 give you a chance to see it before installing.
#0 92.02 
#0 92.02 Please direct support requests to the "Event-Driven Servers" Google Group at
#0 92.02 
#0 92.02     event-driven-servers@googlegroups.com
#0 92.02     https://groups.google.com/group/event-driven-servers
#0 92.02 
#0 92.02 or file an issue at
#0 92.02 
#0 92.02     https://github.com/MarcJHuber/event-driven-servers
#0 92.02 
#0 92.02 Support requests sent to the author's private email address may be silently 
#0 92.02 ignored.
#0 92.02 ===============================================================================
#0 92.03 make[1]: Entering directory '/event-driven-servers/mavis'
#0 92.03 make[2]: Entering directory '/event-driven-servers/build/linux-5.19.0-45-generic-x86_64/mavis'
#0 92.04 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o libmavis.o /event-driven-servers/mavis/libmavis.c
#0 92.12 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o log.o /event-driven-servers/mavis/log.c
#0 92.15 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o debug.o /event-driven-servers/mavis/debug.c
#0 92.18 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o blowfish.o /event-driven-servers/mavis/blowfish.c
#0 92.21 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o radix.o /event-driven-servers/misc/radix.c
#0 92.25 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o net.o /event-driven-servers/misc/net.c
#0 92.34 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o scm.o /event-driven-servers/mavis/scm.c
#0 92.37 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o groups.o /event-driven-servers/mavis/groups.c
#0 92.40 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o rb.o /event-driven-servers/misc/rb.c
#0 92.46 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o crc32.o /event-driven-servers/misc/crc32.c
#0 92.47 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o tokenize.o /event-driven-servers/misc/tokenize.c
#0 92.49 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o base64.o /event-driven-servers/misc/base64.c
#0 92.51 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o memops.o /event-driven-servers/misc/memops.c
#0 92.54 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o ostype.o /event-driven-servers/misc/ostype.c
#0 92.57 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o io_sched.o /event-driven-servers/misc/io_sched.c
#0 92.72 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -DMAVIS_DIR="\"/usr/local/lib64/mavis\"" -c -o mavis_parse.o /event-driven-servers/mavis/mavis_parse.c
#0 92.99 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o token.o /event-driven-servers/mavis/token.c
#0 93.00 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o setproctitle.o /event-driven-servers/misc/setproctitle.c
#0 93.03 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o mymd5.o /event-driven-servers/misc/mymd5.c
#0 93.07 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o mymd4.o /event-driven-servers/misc/mymd4.c
#0 93.10 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o io_child.o /event-driven-servers/misc/io_child.c
#0 93.13 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o set_proctitle.o /event-driven-servers/mavis/set_proctitle.c
#0 93.16 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o spawnd_accepted.o /event-driven-servers/mavis/spawnd_accepted.c
#0 93.21 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o spawnd_conf.o /event-driven-servers/mavis/spawnd_conf.c
#0 93.27 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o spawnd_main.o /event-driven-servers/mavis/spawnd_main.c
#0 93.34 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o spawnd_scm_spawn.o /event-driven-servers/mavis/spawnd_scm_spawn.c
#0 93.39 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o spawnd_signals.o /event-driven-servers/mavis/spawnd_signals.c
#0 93.42 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o pid_write.o /event-driven-servers/misc/pid_write.c
#0 93.45 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o sig_segv.o /event-driven-servers/misc/sig_segv.c
#0 93.49 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o md5crypt.o /event-driven-servers/misc/md5crypt.c
#0 93.52 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include      -fPIC -c -o av_send.o /event-driven-servers/mavis/av_send.c
#0 93.54 gcc -shared -o libmavis.so.0.1 libmavis.o log.o debug.o blowfish.o radix.o net.o scm.o groups.o rb.o crc32.o tokenize.o base64.o memops.o ostype.o io_sched.o mavis_parse.o token.o setproctitle.o mymd5.o mymd4.o io_child.o set_proctitle.o spawnd_accepted.o spawnd_conf.o spawnd_main.o spawnd_scm_spawn.o spawnd_signals.o pid_write.o sig_segv.o md5crypt.o av_send.o  -L/usr/lib -Wl,-rpath,/usr/lib -lpcre2-8     -ldl
#0 93.56 rm -f libmavis.so.0 ; ln libmavis.so.0.1 libmavis.so.0
#0 93.56 rm -f libmavis.so ; ln libmavis.so.0 libmavis.so
#0 93.57 gcc  -Wall -W -Wno-strict-prototypes -Wno-implicit-fallthrough -Werror -Wno-deprecated-declarations -Wno-unused-result -g -Og -ggdb  -DOSTYPE=linux -DOSLEVEL=0x05130000 -DOS="\"linux-5.19.0-45-generic-x86_64\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DWITH_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DWITH_RADCLI -DWITH_CRYPT -DWITH_EPOLL -DWITH_POLL -DWITH_SELECT -DWITH_IPC -I/event-driven-servers -I/usr/include        -c -o radmavis.o /event-driven-servers/mavis/radmavis.c
#0 93.61 gcc -o radmavis radmavis.o    
#0 93.62 /usr/bin/ld: radmavis.o: in function `set_rc':
#0 93.62 /event-driven-servers/mavis/radmavis.c:27: undefined reference to `rc_add_config'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:30: undefined reference to `rc_destroy'
#0 93.62 /usr/bin/ld: radmavis.o: in function `main':
#0 93.62 /event-driven-servers/mavis/radmavis.c:44: undefined reference to `rc_new'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:45: undefined reference to `rc_config_init'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:71: undefined reference to `rc_destroy'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:77: undefined reference to `rc_conf_str'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:77: undefined reference to `rc_read_dictionary'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:78: undefined reference to `rc_conf_str'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:156: undefined reference to `rc_avpair_free'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:157: undefined reference to `rc_avpair_free'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:100: undefined reference to `rc_avpair_add'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:101: undefined reference to `rc_avpair_add'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:103: undefined reference to `rc_avpair_add'
#0 93.62 /usr/bin/ld: /event-driven-servers/mavis/radmavis.c:105: undefined reference to `rc_auth'
#0 93.63 collect2: error: ld returned 1 exit status
#0 93.63 make[2]: *** [/event-driven-servers/mavis/Makefile.obj:64: radmavis] Error 1
#0 93.63 make[2]: Leaving directory '/event-driven-servers/build/linux-5.19.0-45-generic-x86_64/mavis'
#0 93.63 make[1]: *** [GNUmakefile:21: build] Error 2
#0 93.63 make[1]: Leaving directory '/event-driven-servers/mavis'
#0 93.63 make: *** [GNUmakefile:31: dirs] Error 1

Do I need any other dependency to resolve those undefined references in radmavis.c?

Thanks and best wishes

Michael

Hi Michael,

#0 93.61 gcc -o radmavis radmavis.o doesn't show the -lradcli stuff. The configure script should have set the LIB_RADCLI variable to something along the lines of

-L/usr/x86_64-linux-gnu/lib -Wl,-rpath,/usr/x86_64-linux-gnu/lib -lradcli

Could you please check whether your current build/Makefile.inc.* sets this?

Thanks,

Marc

Thanks Marc, now I changed the configure command to:

./configure --debug --with-pcre2 --with-radcli ${TAC_PLUS_PROJECT}

Afterwards, the compilation worked without error. However, I don't see any RADIUS request sent when testing.

     1: io_poll (0x5636cce33080) timeout: 10001, res: 1
     1: fd 3 ctx 0x5636cce32c70
     1: fd 3 cb = 0x7f5b98d94a8d
     1: + spawnd_accepted
     1: - spawnd_accepted
     1: io_sched_exec (0x5636cce33080)
     1: poll_timeout = 5559ms
     1: io_poll (0x5636cce33080) timeout: 5559
    13: io_poll (0x564bbef38960) timeout: 59998, res: 1
    13: fd 3 ctx 0x564bbef42ae0
    13: fd 3 cb = 0x564bbd3be36b
    13:  io_register 4
    13: io_sched_add 0x564bbf2d07f0 60.0
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27335ms
    13: io_poll (0x564bbef38960) timeout: 27335
    13: io_poll (0x564bbef38960) timeout: 27335, res: 1
    13: fd 4 ctx 0x564bbf2d07f0
    13: fd 4 cb = 0x564bbd3c07a6
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27335ms
    13: io_poll (0x564bbef38960) timeout: 27335
    13: io_poll (0x564bbef38960) timeout: 27335, res: 1
    13: fd 4 ctx 0x564bbf2d07f0
    13: fd 4 cb = 0x564bbd3bfd91
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27335ms
    13: io_poll (0x564bbef38960) timeout: 27335
    13: io_poll (0x564bbef38960) timeout: 27335, res: 1
    13: fd 4 ctx 0x564bbf2d07f0
    13: fd 4 cb = 0x564bbd3c07a6
    13:  av_set(TYPE) = TACPLUS             
    13:  av_set(USER) = test@test123        
    13:  av_set(TIMESTAMP) = -701845866          
    13:  av_set(TACTYPE) = AUTH                
    13:  av_set(SERVERIP) = 127.0.0.1           
    13:  av_set(REALM) = default             
    13:  av_set(PASSWORD) = test                
    13: + mavis_send
    13:   av_set(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  + external:Mavis_send
    13:    av_get(USER) = test@test123        
0/line 55: [<unknown>] $USER <pcre-regex> '^.*\@test123.*$' => true
0/line 55: [!] => false
    13:    av_get(TYPE) = TACPLUS             
    13:    av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:    av_get(TYPE) = TACPLUS             
    13:    av_get(TIMESTAMP) = -701845866          
    13:    av_get(USER) = test@test123        
    13:    av_get(PASSWORD) = test                
    13:    av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:    av_get(SERVERIP) = 127.0.0.1           
    13:    av_get(REALM) = default             
    13:    av_get(TACTYPE) = AUTH                
    13:   + external:write_to_child
    13:   - external:write_to_child
    13:  - external:Mavis_send = 1
    13: - mavis_send (1)
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27334ms
    13: io_poll (0x564bbef38960) timeout: 27334
    13: io_poll (0x564bbef38960) timeout: 27334, res: 3
    13: fd 8 ctx 0x7f52e7453010
    13: fd 8 cb = 0x7f52e7479304
    13: fd 6 ctx 0x7f52e7453010
    13: fd 6 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 6
    13:   io_unregister 5
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 28
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27331ms
    13: io_poll (0x564bbef38960) timeout: 27331
    13: io_poll (0x564bbef38960) timeout: 27331, res: 1
    13: fd 8 ctx 0x7f52e7453010
    13: fd 8 cb = 0x7f52e7479304
    13:  io_unregister 8
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27331ms
    13: io_poll (0x564bbef38960) timeout: 27331
    13: io_poll (0x564bbef38960) timeout: 27331, res: 3
    13: fd 28 ctx 0x7f52e733b010
    13: fd 28 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 28
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x7f52e733b010
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27325ms
    13: io_poll (0x564bbef38960) timeout: 27325
    13: io_poll (0x564bbef38960) timeout: 27325, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27321ms
    13: io_poll (0x564bbef38960) timeout: 27321
    13: io_poll (0x564bbef38960) timeout: 27321, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27317ms
    13: io_poll (0x564bbef38960) timeout: 27317
    13: io_poll (0x564bbef38960) timeout: 27317, res: 1
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27312ms
    13: io_poll (0x564bbef38960) timeout: 27312
    13: io_poll (0x564bbef38960) timeout: 27312, res: 1
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27312ms
    13: io_poll (0x564bbef38960) timeout: 27312
    13: io_poll (0x564bbef38960) timeout: 27312, res: 1
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27312ms
    13: io_poll (0x564bbef38960) timeout: 27312
    13: io_poll (0x564bbef38960) timeout: 27312, res: 1
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27312ms
    13: io_poll (0x564bbef38960) timeout: 27312
    13: io_poll (0x564bbef38960) timeout: 27312, res: 1
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27312ms
    13: io_poll (0x564bbef38960) timeout: 27312
    13: io_poll (0x564bbef38960) timeout: 27312, res: 1
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27312ms
    13: io_poll (0x564bbef38960) timeout: 27312
    13: io_poll (0x564bbef38960) timeout: 27312, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27311ms
    13: io_poll (0x564bbef38960) timeout: 27311
    13: io_poll (0x564bbef38960) timeout: 27311, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27306ms
    13: io_poll (0x564bbef38960) timeout: 27306
    13: io_poll (0x564bbef38960) timeout: 27306, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27301ms
    13: io_poll (0x564bbef38960) timeout: 27301
    13: io_poll (0x564bbef38960) timeout: 27301, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27296ms
    13: io_poll (0x564bbef38960) timeout: 27296
    13: io_poll (0x564bbef38960) timeout: 27296, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27292ms
    13: io_poll (0x564bbef38960) timeout: 27292
    13: io_poll (0x564bbef38960) timeout: 27292, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27287ms
    13: io_poll (0x564bbef38960) timeout: 27287
    13: io_poll (0x564bbef38960) timeout: 27287, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27282ms
    13: io_poll (0x564bbef38960) timeout: 27282
    13: io_poll (0x564bbef38960) timeout: 27282, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27278ms
    13: io_poll (0x564bbef38960) timeout: 27278
    13: io_poll (0x564bbef38960) timeout: 27278, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27274ms
    13: io_poll (0x564bbef38960) timeout: 27274
    13: io_poll (0x564bbef38960) timeout: 27274, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27270ms
    13: io_poll (0x564bbef38960) timeout: 27270
    13: io_poll (0x564bbef38960) timeout: 27270, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27264ms
    13: io_poll (0x564bbef38960) timeout: 27264
    13: io_poll (0x564bbef38960) timeout: 27264, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27260ms
    13: io_poll (0x564bbef38960) timeout: 27260
    13: io_poll (0x564bbef38960) timeout: 27260, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27255ms
    13: io_poll (0x564bbef38960) timeout: 27255
    13: io_poll (0x564bbef38960) timeout: 27255, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27251ms
    13: io_poll (0x564bbef38960) timeout: 27251
    13: io_poll (0x564bbef38960) timeout: 27251, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27247ms
    13: io_poll (0x564bbef38960) timeout: 27247
    13: io_poll (0x564bbef38960) timeout: 27247, res: 1
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27244ms
    13: io_poll (0x564bbef38960) timeout: 27244
    13: io_poll (0x564bbef38960) timeout: 27244, res: 1
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27244ms
    13: io_poll (0x564bbef38960) timeout: 27244
    13: io_poll (0x564bbef38960) timeout: 27244, res: 1
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27244ms
    13: io_poll (0x564bbef38960) timeout: 27244
    13: io_poll (0x564bbef38960) timeout: 27244, res: 1
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27244ms
    13: io_poll (0x564bbef38960) timeout: 27244
    13: io_poll (0x564bbef38960) timeout: 27244, res: 1
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27244ms
    13: io_poll (0x564bbef38960) timeout: 27244
    13: io_poll (0x564bbef38960) timeout: 27244, res: 1
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27244ms
    13: io_poll (0x564bbef38960) timeout: 27244
    13: io_poll (0x564bbef38960) timeout: 27244, res: 1
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27244ms
    13: io_poll (0x564bbef38960) timeout: 27244
    13: io_poll (0x564bbef38960) timeout: 27244, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27242ms
    13: io_poll (0x564bbef38960) timeout: 27242
    13: io_poll (0x564bbef38960) timeout: 27242, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27237ms
    13: io_poll (0x564bbef38960) timeout: 27237
    13: io_poll (0x564bbef38960) timeout: 27237, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27234ms
    13: io_poll (0x564bbef38960) timeout: 27234
    13: io_poll (0x564bbef38960) timeout: 27234, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27227ms
    13: io_poll (0x564bbef38960) timeout: 27227
    13: io_poll (0x564bbef38960) timeout: 27227, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27223ms
    13: io_poll (0x564bbef38960) timeout: 27223
    13: io_poll (0x564bbef38960) timeout: 27223, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27217ms
    13: io_poll (0x564bbef38960) timeout: 27217
    13: io_poll (0x564bbef38960) timeout: 27217, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27212ms
    13: io_poll (0x564bbef38960) timeout: 27212
    13: io_poll (0x564bbef38960) timeout: 27212, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27207ms
    13: io_poll (0x564bbef38960) timeout: 27207
    13: io_poll (0x564bbef38960) timeout: 27207, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 30
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27202ms
    13: io_poll (0x564bbef38960) timeout: 27202
    13: io_poll (0x564bbef38960) timeout: 27202, res: 3
    13: fd 8 ctx 0x564bbf2d0ce0
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13:  forking child number 0
    13:   io_register 6
    13:   io_register 8
    13:   io_register 31
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:  starting query on child 0 (S2LgN+TXJlRI60IxnPuP6w=)
    13:   av_get(TYPE) = TACPLUS             
    13:   av_get(TIMESTAMP) = -701845866          
    13:   av_get(USER) = test@test123        
    13:   av_get(PASSWORD) = test                
    13:   av_get(SERIAL) = S2LgN+TXJlRI60IxnPuP6w=
    13:   av_get(SERVERIP) = 127.0.0.1           
    13:   av_get(REALM) = default             
    13:   av_get(TACTYPE) = AUTH                
    13:  + external:write_to_child
    13:  - external:write_to_child
    13: - external:child_died
    13: fd 30 ctx 0x564bbf2d0ce0
    13: fd 30 cb = 0x7f52e7479304
    13:  io_unregister 30
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27197ms
    13: io_poll (0x564bbef38960) timeout: 27197
    13: io_poll (0x564bbef38960) timeout: 27197, res: 3
    13: fd 8 ctx 0x564bbf2f3520
    13: fd 8 cb = 0x7f52e747a1a4
    13: + external:child_died
    13:   io_unregister 8
    13:   io_unregister 6
    13: - external:child_died
    13: fd 31 ctx 0x564bbf2f3520
    13: fd 31 cb = 0x7f52e7479304
    13:  io_unregister 31
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 27193ms
    13: io_poll (0x564bbef38960) timeout: 27193
     1: io_poll (0x5636cce33080) timeout: 5559, res: 0
     1: io_sched_exec (0x5636cce33080)
     1:  executing ...
     1: + periodics
     1:  io_sched_renew_proc 0x5636cce30df0
     1:  to be fired at 64986c52:00044633
     1:  servers_cur: 10
     1:  servers_count: 10
     1:  servers_min: 10
     1: - periodics
     1: ... done.
     1:  rescheduled at 64986c52:00044633 (10s)
     1: poll_timeout = 10001ms
     1: io_poll (0x5636cce33080) timeout: 10001
    13: io_poll (0x564bbef38960) timeout: 27193, res: 1
    13: fd 4 ctx 0x564bbf2d07f0
    13: fd 4 cb = 0x564bbd3c07a6
    13: + io_sched_pop
    13: - io_sched_pop
    13:  io_unregister 4
    13: + mavis_cancel
    13:  + external:Mavis_cancel
    13:   + external:Mavis_cancel
    13:   - external:Mavis_cancel = 0
    13:  - external:Mavis_cancel = 0
    13: - mavis_cancel (0)
    13: io_sched_exec (0x564bbef38960)
    13: poll_timeout = 17323ms
    13: io_poll (0x564bbef38960) timeout: 17323
     1: io_poll (0x5636cce33080) timeout: 10001, res: 1
     1: fd 4 ctx 0x5636cce310f0
     1: fd 4 cb = 0x7f5b98d97dc2
     1: io_sched_exec (0x5636cce33080)
     1: poll_timeout = 5552ms
     1: io_poll (0x5636cce33080) timeout: 5552

Anything else I did wrong? Is the syntax to call radmavis in the configuration different when using radcli instead of freeradius-client?

Best wishes

Michael

Hi Michael,

there are various "external:child_died" in your debug output, so I'd guess that the radmavis binary did dump core, external linking didn't work or whatever else ...

You can easily check functionality by issuing

printf "0 TACPLUS\n4 $USER\n8 $PASS\n49 AUTH\n=\n" | radmavis ...

Usage for both the radcli and the freeradius-client versions should be exactly the same. Alas, my testing options are limited (I don't have a RADIUS server running in my testing environment, but will consider installing one if necessary).

Cheers,

Marc

Hi Marc,

thanks for telling me how to test this. radmavis did dump core indeed due to a segmentation fault:

root@tac_plus:/# printf "0 TACPLUS\n4 test@test123\n8 test\n49 AUTH\n=\n" | /usr/local/sbin/radmavis radmavis "authserver=1.2.3.4:1812:secret"
Unable to parse 'radmavis'
root@tac_plus:/# 
root@tac_plus:/# printf "0 TACPLUS\n4 test@test123\n8 test\n49 AUTH\n=\n" | /usr/local/sbin/radmavis "authserver=1.2.3.4:1812:secret"
0 TACPLUS
4 test@test123
8 test
49 AUTH
Segmentation fault (core dumped)

strace:

root@tac_plus:/# printf "0 TACPLUS\n4 test@test123\n8 test\n49 AUTH\n=\n" | strace -v /usr/local/sbin/radmavis "authserver=1.2.3.4:1812:secret"
execve("/usr/local/sbin/radmavis", ["/usr/local/sbin/radmavis", "authserver=1.2.3.4:1812:secret"], ["HOSTNAME=tac_plus", "TAC_PLUS_PROJECT=tac_plus", "PWD=/", "TAC_PLUS_DEBUG_LEVEL=-1", "HOME=/root", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "HEALTHCHECK_USER_NAME=healthchec"..., "HEALTHCHECK_SHARED_SECRET=cisco", "TAC_PLUS_CONFIG_FILE=/usr/local/"..., "HEALTHCHECK_AUTH_CMD=exit", "TERM=xterm", "SHLVL=0", "HEALTHCHECK_USER_PASSWORD=test", "http_proxy=http://10.1.131.60:31"..., "PATH=/usr/local/sbin:/usr/local/"..., "HEALTHCHECK_STDOUT=/dev/null", "_=/usr/bin/strace"]) = 0
brk(NULL)                               = 0x5566cb69d000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffcee562cd0) = -1 EINVAL (Invalid argument)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7d1f073000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/haswell/x86_64/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/haswell/x86_64", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/haswell/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/haswell", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/x86_64", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/haswell/x86_64/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/haswell/x86_64", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/haswell/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/haswell", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64", 0x7ffcee561ef0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/libradcli.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib", {st_dev=makedev(0, 0x34), st_ino=411727, st_mode=S_IFDIR|0755, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=16, st_size=4096, st_atime=1687709693 /* 2023-06-25T18:14:53.587746329+0200 */, st_atime_nsec=587746329, st_mtime=1687709590 /* 2023-06-25T18:13:10.999890340+0200 */, st_mtime_nsec=999890340, st_ctime=1687717613 /* 2023-06-25T20:26:53.042366045+0200 */, st_ctime_nsec=42366045}, 0) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=397521, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=16, st_size=6507, st_atime=1687717613 /* 2023-06-25T20:26:53.178372012+0200 */, st_atime_nsec=178372012, st_mtime=1687717613 /* 2023-06-25T20:26:53.138370257+0200 */, st_mtime_nsec=138370257, st_ctime=1687717613 /* 2023-06-25T20:26:53.138370257+0200 */, st_ctime_nsec=138370257}, AT_EMPTY_PATH) = 0
mmap(NULL, 6507, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7d1f071000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libradcli.so.4", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`=\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=413936, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=152, st_size=74256, st_atime=1687709588 /* 2023-06-25T18:13:08.193859474+0200 */, st_atime_nsec=193859474, st_mtime=1593466517 /* 2020-06-29T23:35:17+0200 */, st_mtime_nsec=0, st_ctime=1687709691 /* 2023-06-25T18:14:51.091637347+0200 */, st_ctime_nsec=91637347}, AT_EMPTY_PATH) = 0
mmap(NULL, 76200, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1f05e000
mprotect(0x7f7d1f061000, 57344, PROT_NONE) = 0
mmap(0x7f7d1f061000, 36864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f7d1f061000
mmap(0x7f7d1f06a000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7f7d1f06a000
mmap(0x7f7d1f06f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x7f7d1f06f000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\237\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0"..., 48, 848) = 48
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0i8\235HZ\227\223\333\350s\360\352,\223\340."..., 68, 896) = 68
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401200, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=4336, st_size=2216304, st_atime=1657149803 /* 2022-07-07T01:23:23+0200 */, st_atime_nsec=0, st_mtime=1657149803 /* 2022-07-07T01:23:23+0200 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.709512329+0200 */, st_ctime_nsec=709512329}, AT_EMPTY_PATH) = 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 2260560, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1ee36000
mmap(0x7f7d1ee5e000, 1658880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f7d1ee5e000
mmap(0x7f7d1eff3000, 360448, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bd000) = 0x7f7d1eff3000
mmap(0x7f7d1f04b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x214000) = 0x7f7d1f04b000
mmap(0x7f7d1f051000, 52816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7d1f051000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgnutls.so.30", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401231, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=3912, st_size=2000320, st_atime=1676409197 /* 2023-02-14T22:13:17+0100 */, st_atime_nsec=0, st_mtime=1676409197 /* 2023-02-14T22:13:17+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.809516671+0200 */, st_ctime_nsec=809516671}, AT_EMPTY_PATH) = 0
mmap(NULL, 2009088, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1ec4b000
mmap(0x7f7d1ec7c000, 1216512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x31000) = 0x7f7d1ec7c000
mmap(0x7f7d1eda5000, 512000, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15a000) = 0x7f7d1eda5000
mmap(0x7f7d1ee22000, 73728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d6000) = 0x7f7d1ee22000
mmap(0x7f7d1ee34000, 6144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7d1ee34000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnettle.so.8", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401266, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=552, st_size=281000, st_atime=1648138873 /* 2022-03-24T17:21:13+0100 */, st_atime_nsec=0, st_mtime=1648138873 /* 2022-03-24T17:21:13+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.865519102+0200 */, st_ctime_nsec=865519102}, AT_EMPTY_PATH) = 0
mmap(NULL, 282840, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1ec05000
mmap(0x7f7d1ec0f000, 143360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7f7d1ec0f000
mmap(0x7f7d1ec32000, 90112, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2d000) = 0x7f7d1ec32000
mmap(0x7f7d1ec48000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x42000) = 0x7f7d1ec48000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libp11-kit.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401275, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=2512, st_size=1285888, st_atime=1648138936 /* 2022-03-24T17:22:16+0100 */, st_atime_nsec=0, st_mtime=1648138936 /* 2022-03-24T17:22:16+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.877519624+0200 */, st_ctime_nsec=877519624}, AT_EMPTY_PATH) = 0
mmap(NULL, 1289160, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1eaca000
mmap(0x7f7d1eaf3000, 671744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x29000) = 0x7f7d1eaf3000
mmap(0x7f7d1eb97000, 368640, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xcd000) = 0x7f7d1eb97000
mmap(0x7f7d1ebf1000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x126000) = 0x7f7d1ebf1000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libidn2.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401239, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=256, st_size=129096, st_atime=1648123969 /* 2022-03-24T13:12:49+0100 */, st_atime_nsec=0, st_mtime=1648123969 /* 2022-03-24T13:12:49+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.817517018+0200 */, st_ctime_nsec=817517018}, AT_EMPTY_PATH) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7d1eac8000
mmap(NULL, 131088, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1eaa7000
mmap(0x7f7d1eaa9000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f7d1eaa9000
mmap(0x7f7d1eaad000, 102400, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f7d1eaad000
mmap(0x7f7d1eac6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e000) = 0x7f7d1eac6000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libunistring.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401324, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=3408, st_size=1743016, st_atime=1641661722 /* 2022-01-08T18:08:42+0100 */, st_atime_nsec=0, st_mtime=1641661722 /* 2022-01-08T18:08:42+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.985524313+0200 */, st_ctime_nsec=985524313}, AT_EMPTY_PATH) = 0
mmap(NULL, 1743080, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1e8fd000
mmap(0x7f7d1e90e000, 221184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x7f7d1e90e000
mmap(0x7f7d1e944000, 1433600, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x47000) = 0x7f7d1e944000
mmap(0x7f7d1eaa2000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a5000) = 0x7f7d1eaa2000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libtasn1.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401313, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=184, st_size=92312, st_atime=1648138428 /* 2022-03-24T17:13:48+0100 */, st_atime_nsec=0, st_mtime=1648138428 /* 2022-03-24T17:13:48+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.957523097+0200 */, st_ctime_nsec=957523097}, AT_EMPTY_PATH) = 0
mmap(NULL, 94760, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1e8e5000
mprotect(0x7f7d1e8e8000, 77824, PROT_NONE) = 0
mmap(0x7f7d1e8e8000, 57344, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f7d1e8e8000
mmap(0x7f7d1e8f6000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x7f7d1e8f6000
mmap(0x7f7d1e8fb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7f7d1e8fb000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libhogweed.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401237, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=568, st_size=289800, st_atime=1648138873 /* 2022-03-24T17:21:13+0100 */, st_atime_nsec=0, st_mtime=1648138873 /* 2022-03-24T17:21:13+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.817517018+0200 */, st_ctime_nsec=817517018}, AT_EMPTY_PATH) = 0
mmap(NULL, 291640, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1e89d000
mprotect(0x7f7d1e8a5000, 253952, PROT_NONE) = 0
mmap(0x7f7d1e8a5000, 77824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7f7d1e8a5000
mmap(0x7f7d1e8b8000, 172032, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7f7d1e8b8000
mmap(0x7f7d1e8e3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x45000) = 0x7f7d1e8e3000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgmp.so.10", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401229, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=1032, st_size=526896, st_atime=1642417005 /* 2022-01-17T11:56:45+0100 */, st_atime_nsec=0, st_mtime=1642417005 /* 2022-01-17T11:56:45+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.793515976+0200 */, st_ctime_nsec=793515976}, AT_EMPTY_PATH) = 0
mmap(NULL, 528912, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1e81b000
mmap(0x7f7d1e825000, 389120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7f7d1e825000
mmap(0x7f7d1e884000, 94208, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x69000) = 0x7f7d1e884000
mmap(0x7f7d1e89b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7f000) = 0x7f7d1e89b000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libffi.so.8", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=401220, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=96, st_size=47688, st_atime=1642415828 /* 2022-01-17T11:37:08+0100 */, st_atime_nsec=0, st_mtime=1642415828 /* 2022-01-17T11:37:08+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.773515108+0200 */, st_ctime_nsec=773515108}, AT_EMPTY_PATH) = 0
mmap(NULL, 50736, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d1e80e000
mprotect(0x7f7d1e810000, 36864, PROT_NONE) = 0
mmap(0x7f7d1e810000, 28672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f7d1e810000
mmap(0x7f7d1e817000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x7f7d1e817000
mmap(0x7f7d1e819000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7f7d1e819000
close(3)                                = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7d1e80c000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7d1e809000
arch_prctl(ARCH_SET_FS, 0x7f7d1e809940) = 0
set_tid_address(0x7f7d1e809c10)         = 445
set_robust_list(0x7f7d1e809c20, 24)     = 0
rseq(0x7f7d1e80a2e0, 0x20, 0, 0x53053053) = 0
mprotect(0x7f7d1f04b000, 16384, PROT_READ) = 0
mprotect(0x7f7d1e819000, 4096, PROT_READ) = 0
mprotect(0x7f7d1e89b000, 4096, PROT_READ) = 0
mprotect(0x7f7d1ec48000, 8192, PROT_READ) = 0
mprotect(0x7f7d1e8e3000, 4096, PROT_READ) = 0
mprotect(0x7f7d1e8fb000, 4096, PROT_READ) = 0
mprotect(0x7f7d1eaa2000, 16384, PROT_READ) = 0
mprotect(0x7f7d1eac6000, 4096, PROT_READ) = 0
mprotect(0x7f7d1ebf1000, 40960, PROT_READ) = 0
mprotect(0x7f7d1ee22000, 65536, PROT_READ) = 0
mprotect(0x7f7d1f06f000, 4096, PROT_READ) = 0
mprotect(0x5566ca52c000, 4096, PROT_READ) = 0
mprotect(0x7f7d1f0ad000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7f7d1f071000, 6507)            = 0
getrandom("\x05\xe8\x01\x69\x52\x6f\x54\x92", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x5566cb69d000
brk(0x5566cb6be000)                     = 0x5566cb6be000
getrandom("\xb6", 1, GRND_NONBLOCK)     = 1
newfstatat(AT_FDCWD, "/etc/gnutls/config", 0x7ffcee5625c0, 0) = -1 ENOENT (No such file or directory)
getpid()                                = 445
openat(AT_FDCWD, "/etc/radcli/dictionary", O_RDONLY) = 3
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=411361, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=24, st_size=10037, st_atime=1687709593 /* 2023-06-25T18:13:13.114913491+0200 */, st_atime_nsec=114913491, st_mtime=1593466517 /* 2020-06-29T23:35:17+0200 */, st_mtime_nsec=0, st_ctime=1687709690 /* 2023-06-25T18:14:50.283602068+0200 */, st_ctime_nsec=283602068}, AT_EMPTY_PATH) = 0
read(3, "#\n# Updated 97/06/13 to livingst"..., 4096) = 4096
read(3, "IBUTE\tFramed-Pool\t\t88\tstring\nATT"..., 4096) = 4096
brk(0x5566cb6df000)                     = 0x5566cb6df000
read(3, "    Lost-Carrier            2\nVA"..., 4096) = 1845
read(3, "", 4096)                       = 0
close(3)                                = 0
newfstatat(0, "", {st_dev=makedev(0, 0xd), st_ino=44698868, st_mode=S_IFIFO|0600, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=0, st_size=0, st_atime=1687717725 /* 2023-06-25T20:28:45.987320371+0200 */, st_atime_nsec=987320371, st_mtime=1687717725 /* 2023-06-25T20:28:45.987320371+0200 */, st_mtime_nsec=987320371, st_ctime=1687717725 /* 2023-06-25T20:28:45.987320371+0200 */, st_ctime_nsec=987320371}, AT_EMPTY_PATH) = 0
read(0, "0 TACPLUS\n4 test@test123\n8 test\n"..., 4096) = 42
newfstatat(1, "", {st_dev=makedev(0, 0x3f), st_ino=3, st_mode=S_IFCHR|0620, st_nlink=1, st_uid=0, st_gid=5, st_blksize=1024, st_blocks=0, st_rdev=makedev(0x88, 0), st_atime=1687717721 /* 2023-06-25T20:28:41.158992821+0200 */, st_atime_nsec=158992821, st_mtime=1687717721 /* 2023-06-25T20:28:41.158992821+0200 */, st_mtime_nsec=158992821, st_ctime=1687717536 /* 2023-06-25T20:25:36.158992821+0200 */, st_ctime_nsec=158992821}, AT_EMPTY_PATH) = 0
write(1, "0 TACPLUS\n", 100 TACPLUS
)             = 10
write(1, "4 test@test123\n", 154 test@test123
)        = 15
write(1, "8 test\n", 78 test
)                 = 7
write(1, "49 AUTH\n", 849 AUTH
)                = 8
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
newfstatat(AT_FDCWD, "/etc/nsswitch.conf", {st_dev=makedev(0, 0x34), st_ino=396567, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=494, st_atime=1608116695 /* 2020-12-16T12:04:55+0100 */, st_atime_nsec=0, st_mtime=1608116695 /* 2020-12-16T12:04:55+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.101485929+0200 */, st_ctime_nsec=101485929}, 0) = 0
newfstatat(AT_FDCWD, "/", {st_dev=makedev(0, 0x34), st_ino=396174, st_mode=S_IFDIR|0755, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=4096, st_atime=1687717530 /* 2023-06-25T20:25:30.926763233+0200 */, st_atime_nsec=926763233, st_mtime=1687717692 /* 2023-06-25T20:28:12.209838843+0200 */, st_mtime_nsec=209838843, st_ctime=1687717692 /* 2023-06-25T20:28:12.209838843+0200 */, st_ctime_nsec=209838843}, 0) = 0
openat(AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=396567, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=494, st_atime=1608116695 /* 2020-12-16T12:04:55+0100 */, st_atime_nsec=0, st_mtime=1608116695 /* 2020-12-16T12:04:55+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.101485929+0200 */, st_ctime_nsec=101485929}, AT_EMPTY_PATH) = 0
read(3, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 494
read(3, "", 4096)                       = 0
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=396567, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=494, st_atime=1608116695 /* 2020-12-16T12:04:55+0100 */, st_atime_nsec=0, st_mtime=1608116695 /* 2020-12-16T12:04:55+0100 */, st_mtime_nsec=0, st_ctime=1687433868 /* 2023-06-22T13:37:48.101485929+0200 */, st_ctime_nsec=101485929}, AT_EMPTY_PATH) = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=397521, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=16, st_size=6507, st_atime=1687717613 /* 2023-06-25T20:26:53.178372012+0200 */, st_atime_nsec=178372012, st_mtime=1687717613 /* 2023-06-25T20:26:53.138370257+0200 */, st_mtime_nsec=138370257, st_ctime=1687717613 /* 2023-06-25T20:26:53.138370257+0200 */, st_ctime_nsec=138370257}, AT_EMPTY_PATH) = 0
mmap(NULL, 6507, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7d1f071000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu", {st_dev=makedev(0, 0x34), st_ino=413918, st_mode=S_IFDIR|0755, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=4096, st_atime=1687717613 /* 2023-06-25T20:26:53.130369906+0200 */, st_atime_nsec=130369906, st_mtime=1687717613 /* 2023-06-25T20:26:53.050366396+0200 */, st_mtime_nsec=50366396, st_ctime=1687717613 /* 2023-06-25T20:26:53.050366396+0200 */, st_ctime_nsec=50366396}, 0) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu", {st_dev=makedev(0, 0x34), st_ino=413918, st_mode=S_IFDIR|0755, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=4096, st_atime=1687717613 /* 2023-06-25T20:26:53.130369906+0200 */, st_atime_nsec=130369906, st_mtime=1687717613 /* 2023-06-25T20:26:53.050366396+0200 */, st_mtime_nsec=50366396, st_ctime=1687717613 /* 2023-06-25T20:26:53.050366396+0200 */, st_ctime_nsec=50366396}, 0) = 0
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/haswell/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/haswell/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/haswell/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/haswell", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/haswell/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/haswell/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/haswell/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/haswell", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64", 0x7ffcee55b090, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib", {st_dev=makedev(0, 0x34), st_ino=411727, st_mode=S_IFDIR|0755, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=16, st_size=4096, st_atime=1687709693 /* 2023-06-25T18:14:53.587746329+0200 */, st_atime_nsec=587746329, st_mtime=1687709590 /* 2023-06-25T18:13:10.999890340+0200 */, st_mtime_nsec=999890340, st_ctime=1687717613 /* 2023-06-25T20:26:53.042366045+0200 */, st_ctime_nsec=42366045}, 0) = 0
openat(AT_FDCWD, "/usr/lib/libnss_db.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
munmap(0x7f7d1f071000, 6507)            = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=397521, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=16, st_size=6507, st_atime=1687717613 /* 2023-06-25T20:26:53.178372012+0200 */, st_atime_nsec=178372012, st_mtime=1687717613 /* 2023-06-25T20:26:53.138370257+0200 */, st_mtime_nsec=138370257, st_ctime=1687717613 /* 2023-06-25T20:26:53.138370257+0200 */, st_ctime_nsec=138370257}, AT_EMPTY_PATH) = 0
mmap(NULL, 6507, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7d1f071000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_db-2.35.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libnss_db-2.35.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/libnss_db-2.35.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/libnss_db-2.35.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
munmap(0x7f7d1f071000, 6507)            = 0
openat(AT_FDCWD, "/etc/services", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_dev=makedev(0, 0x34), st_ino=411373, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=32, st_size=12813, st_atime=1687709593 /* 2023-06-25T18:13:13.114913491+0200 */, st_atime_nsec=114913491, st_mtime=1616884377 /* 2021-03-27T23:32:57+0100 */, st_mtime_nsec=0, st_ctime=1687709690 /* 2023-06-25T18:14:50.287602242+0200 */, st_ctime_nsec=287602242}, AT_EMPTY_PATH) = 0
lseek(3, 0, SEEK_SET)                   = 0
read(3, "# Network services, Internet sty"..., 4096) = 4096
read(3, "\ntinc\t\t655/tcp\t\t\t\t# tinc control"..., 4096) = 4096
close(3)                                = 0
socket(AF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(1812), sin_addr=inet_addr("1.2.3.4")}, 16) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(56550), sin_addr=inet_addr("172.35.199.100")}, [16]) = 0
close(3)                                = 0
getrandom("\xbb\xa6\x2a\x41\x54\x03\x9d\x22\x49\x24\x00\x05\xf8\x43\x9d\x1f\x59\x6d\xbf\x36\x1a\x47\x31\x57\xf2\x84\x04\x37\x12\x90\x9b\xc5"..., 64, 0) = 64
clock_gettime(CLOCK_REALTIME, {tv_sec=1687717726, tv_nsec=54614261}) = 0
clock_gettime(CLOCK_REALTIME, {tv_sec=1687717726, tv_nsec=54686194}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV (core dumped) +++

I'm not an expert in interpreting this unfortunately. Could it be that some dependency is still missing in the minimal docker system (see all the No such file or directory) in the trace?

Best wishes

Michael

Hi Michael,

looks like radcli doesn't accept a secret in the "authserver" specification but relies on a "servers=/etc/radcli/servers" specification for the latter. Alas, after adding that, it segfaults somewhere else.

I'm giving up on radcli. Please use the freeradius-client libraries, these should just work.

Thanks,

Marc

Hi Marc,

I reverted back to lib-freeradius-client. Would have been nice to get those archived packages out of the deployment but if radcli doesn't work, there is nothing we can do about that for now ;).

Thanks a lot for your help. I'll report back in case I run into any more issues.

Best wishes

Michael

Hi Michael,

I think it's safe now to close this.

Thanks,

Marc