If you like BoxMatrix then please contribute Supportdata, Supportdata2, Firmware and/or Hardware (get in touch).
My metamonk@yahoo.com is not reachable by me since years. Please use hippie2000@webnmail.de instead.

0
U

Property:pumaglued (avmcmd)

From BoxMatrix


BoxMatrix >> Shell-Commands >> pumaglued (avmcmd) @ BoxMatrix   -   IRC-Chat   -   Translate: de es fr it nl pl
News Selectors Models Accessories Components Environment Config Commands System Webif Software Develop Lexicon Community Project Media

Startup-Scr Hotplug-Scr BusyBox-Cmds Bash-Cmds AVM-Cmds Chipset-Cmds Linux-Cmds Shared-Libs Kernel-Mods Research

Info
  
Name-Collision - multiple objects in this wiki use the name pumaglued!
pumaglued (avmcmd) Inter-CPU connector for theARM side of Puma6 / Puma7 models.
pumaglued (process) ATOM to ARM CPU interconnector for Puma6 / Puma7 models.
pumaglued (watchdog) ATOM to ARM CPU interconnector for Puma6 / Puma7 models.

AVM-Command

Goto:   Examples  -  Endpoints  -  Events  -  Logs  -  Source  -  Dependencies   -   Model-Matrix   -   Symbols   -   SMW-Browser

Details

pumaglued is the ATOM to ARM Inter-CPU connector for Puma6 / Puma7 cable models.
It is started on the ARM CPU by E41-pumaglued or vendor.pcd and serves various purposes:

fw 7.29 armconsole help:

# pumaglued -?

usage: pumaglued pumaglued [options]

options:
  -?                 - print this help
  -f                 - run in forground. (NOTSET)
  -s                 - stop daemon. (NOTSET)
  -v                 - verbose. (NOTSET)
  -p STRING          - Pidfile. ("/var/run/pumaglued.pid")
  -o INTEGER         - output buffer size. (32768)
  -i INTEGER         - input buffer size. (8192)
  -D STRING          - switch debug logs on. (FUNC)

start server:   pumaglued
stop server :   pumaglued -s

Examples

aicmd remote listener:

See Endpoints below.

remote shell:

See the armconsole article.

TCP proxy:

pumaglued is a tcp proxy serving the ATOM Webinterface to 192.168.100.1 on ARM - fw 7.29 armconsole:

# netstat -luntp | grep pumaglued

tcp        0      0 192.168.100.1:80        0.0.0.0:*               LISTEN      678/pumaglued
tcp        0      0 192.168.100.1:443       0.0.0.0:*               LISTEN      678/pumaglued
tcp        0      0 :::3128                 :::*                    LISTEN      678/pumaglued

# aicmd pumaglued tcpproxy status

proxy 192.168.100.1:80 -> 169.254.1.1:80
proxy 192.168.100.1:443 -> 169.254.1.1:443

192.168.100.1 is the hardcoded IP of the ARM interface lan0, 169.254.1.1 is the acc0 interface IP of the ATOM.

# ifconfig lan0

lan0      Link encap:Ethernet  HWaddr C8:0E:14:XX:XX:XX  
          inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

# route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.1.0     *               255.255.255.252 U     0      0        0 acc0

192.168.100.1 / lan0 seems to be for the ISP since it also serves SNMP:

# netstat -luntp | grep 192.168.100.1

tcp        0      0 192.168.100.1:80        0.0.0.0:*               LISTEN      678/pumaglued
tcp        0      0 192.168.100.1:443       0.0.0.0:*               LISTEN      678/pumaglued
udp        0      0 192.168.100.1:161       0.0.0.0:*                           1016/snmp_agent_cm
udp        0      0 192.168.100.1:162       0.0.0.0:*                           1016/snmp_agent_cm

remote supportdata:

pumaglued can peer remote supportdata via aicmd:

# aicmd pumaglued | grep support

support QUERY                  - show available supportdata
support GET                    - get supportdata

# aicmd pumaglued support QUERY

normal: complete supportdata
enhanced: complete enhanced supportdata
docsis: docsis supportdata
docsisinfo: show docsisinfo
cmlog: show cmlog
dqos: show dqos
cable: supportdata.kabel

# aicmd pumaglued support GET dqos

Active Downstream Service Flows: 
-------------------------------- 

Active Upstream Service Flows:   
-------------------------------- 

Classifiers: 
----------------------- 

HAL statistics:    
------------------------ 
no errors 

remote capture:

pumaglued can peer remote packet capture via aicmd:

# aicmd pumaglued | grep capture

capture QUERY                  - show available captures
capture START                  - start named capture

# aicmd pumaglued capture QUERY

docsis_mng:3001
lo:0
acc0:0
tunl0:0
l2sd0:0
l2sm0:0
l2sd0.2:0
l2sd0.3:0
cni0:0
lbr0:0
lan0:0
wan0:0
erouter0:0
esafe0:0
acc0.4:0

remote status:

pumaglued can peer some status info via aicmd:

# aicmd pumaglued | grep stat | grep -v csock | sort

docsis status                  - show status
lanports status                - show status of lanports
pumacmfltstats GET             - get stats
shell status                   - show open shells
tcpproxy status                - show status

# aicmd pumaglued docsis status

erouter: on
emta   : off
edva   : off

# aicmd pumaglued lanports status

0: LAN:1 eth0           down
1: LAN:2 eth1           up 1000MBit
2: LAN:3 eth2           up 1000MBit
3: LAN:4 eth3           down

# aicmd pumaglued pumacmfltstats GET
aicmd: <<< 500 Missing stats type.

# aicmd pumaglued shell status

169.254.1.2:47817 -> /bin/sh(1365) on /dev/pts/1 (3)

# aicmd pumaglued tcpproxy status

proxy 192.168.100.1:80 -> 169.254.1.1:80
proxy 192.168.100.1:443 -> 169.254.1.1:443

Unfortunately there is no pumacmfltstats QUERY to get a list of possible stats types.

HTTP webserver:

Besides the proxied main Webinterface pumaglued runs an own HTTP only webserver, listening on all ipv4/ipv6 addresses.
This explains why it requires libwebsrv.so.

fw 7.29 armconsole:

# aicmd pumaglued avmcsock show csock | grep http

9   ; [::]:3128 'http server'                 ;     listen                                  ; inet6,stream                  ;

# wget http://localhost:3128/

Connecting to localhost:3128 (127.0.0.1:3128)
wget: server returned error: HTTP/1.1 404 Not Found

Ok, it works but we need a valid URL.

# ls -lR  /usr/www

/usr/www:
drwxr-xr-x    2 root     root            36 Nov  5  2021 cgi-bin

/usr/www/cgi-bin:
lrwxrwxrwx    1 root     root            22 Nov  5  2021 system_status -> /usr/bin/system_status

# ls -l /usr/bin/system_status

-rwxr-xr-x    1 root     root          1141 Nov  5  2021 /usr/bin/system_status

Ok, we have just one file in webspace, let's try it:

# wget http://localhost:3128/cgi-bin/system_status

Connecting to localhost:3128 (127.0.0.1:3128)
wget: server returned error: HTTP/1.1 404 Not Found

Hmmm, strange.

Port forwarding:

pumaglued can enable SNMP and TR-069 ports on the wan0 interface.
This is controlled by the avmipc states snmp_allowed and tr069_allowed.
Both states are sent by dsld on the ATOM CPU, depending on 2 settings in ar7.cfg:

unattended_update {
       ...
       enable_snmp_on_wan = yes;
       enable_tr069_on_wan = no;
       ...
}

Both are used to call the resspective functions of libpumacmflt.so, which controls pumacmflt.ko
to forward the respective ports from the wan0 interface to the internal lan0 modem interface.

For TR-069 the TCP proxy additionally adds a proxy rule to forward the TR-069 port to the ATOM CPU.

Endpoints

aicmd endpoint(s) provided by pumaglued, with these functions: (fw 7.29)

root@fritz2:/var/mod/root# aicmd pumaglued

# provided by pumaglued: - fw 7.29+

HELP                                     - show help
SLABDUMP                                 - show slab allocation
SLABSHOW                                 - show slab information
QUIT                                     - disconnect
 
capture QUERY                            - show available captures
capture START                            - start named capture

support QUERY                            - show available supportdata
support GET                              - get supportdata

docsis status                            - show status

pumacmfltstats GET                       - get stats

tcpproxy status                          - show status

shell status                             - show open shells
shell start                              - start shell
shell cli                                - start cli
shell testmode                           - start testmode

lanports status                          - show status of lanports

# provided by libewnwlinux.so: - fw 7.01+

ewnwlinux show csockshell                - show shells running
ewnwlinux show genetlink                 - show gerneric netlink families

# provided by libewnwlinux.so: - fw 7.90+

ewnwlinux netlink show                   - show internal information
ewnwlinux netlink getroute [address]     - get route for inet address
ewnwlinux netlink interfaces             - show interfaces
ewnwlinux netlink routes [ 4 | 6 ]       - show routes

# provided by libavmcsock.so: - fw 7.01+

avmcsock show csock                      - show all csock
avmcsock show dnsconfig                  - show all dns context
avmcsock show timercb                    - show all timer
avmcsock show debughandles               - show all debughandles
avmcsock show cprocess                   - show all processes
avmcsock set debug                       - set debug flags

# provided by libavmcsock.so: - fw 7.29+

avmcsock show cbcontext                  - show all cbdata
avmcsock show daemon                     - show daemon status
avmcsock show cbuf                       - show cbuf status

# provided by libavmcsock.so: - fw 7.39+

avmcsock getsymbol <address>             - get symbol for address
avmcsock show dnsglobal                  - show all dns global values
avmcsock show dnscache                   - show cache
avmcsock show dnsqueries                 - show all pending queries
avmcsock show avmipc [endpoint shmatch]  - show avmipc events and states
avmcsock ctimer show                     - show all timer
avmcsock ctimer overview                 - show ctimer overview
avmcsock iotrace format unctrl|hexdump   - set format for csock iotrace
avmcsock iotrace file                    - enable iotrace to file
avmcsock iotrace enable                  - enable iotrace via debugmsg
avmcsock iotrace disable                 - disable iotrace
avmcsock iotrace match help|<match>      - show allowed matches or set match
avmcsock iotrace reset                   - remove all matches
avmcsock iotrace show                    - show configuration

# provided by libavmcsock.so: - fw 7.90+

avmcsock show signals                    - show signal handler
avmcsock show connector [cache|stats]    - show connector information
avmcsock show clogger                    - show clogger information
avmcsock set clogmod [ <module> [ '.' <submodule ] ... ] [ '=' <level> ]
                                         - set clogmod log level
avmcsock slab check                      - red zone/free check
avmcsock slab reap [heavy]               - call slab_reap/slab_reap_heavy
avmcsock slab dump [long]                - show slab allocation
avmcsock slab show                       - show slab information
avmcsock slab ewma [show|activate|deactivate|reset]
                                         - show average allocates/freed per second
avmcsock avmipc notifier [endpoint shmatch]
                                         - show registered notifier
avmcsock avmipc set [endpoint shmatch]   - show states/events sent
avmcsock avmipc csv [endpoint shmatch]   - show states/events sent and listing as csv

msgsend endpoint(s) provided by pumaglued, with these functions: (endpoints + commands, collected manually)

pumaglued docsis edocsis <send_to_pumaglued>  # from edocsis_state_changed
pumaglued docsis dhcp_tr069info <$1> <$2>     # from docsis_dhcp_tr069info
pumaglued docsis cmcfgfile                    # from docsis_state_changed
pumaglued docsis edocsis_tr069info <%s>       # from edocsis

Events

Daily updated index of AVM-Events and AVMIPC-Datastore nodes affecting this command. Last update: 2023-12-10 05:13 GMT.
The owners of Event-Sinks and Event-Sources are manual research, which may be incomplete or even wrong.
A * in the Mod column marks info from Supportdata-Probes, which will always stay incomplete.
A ** in the Mod column marks info from Supportdata2 probes, which by their nature will stay way more incomplete.
A - in the Mod column marks manual research, the Firmware then shows where the item occurs, not the Relation.

Relation Typ Object Mod Firmware Info Origin
Netlink family NETLINK_ROUTE 2** 7.29 - 7.39 Communication channel between routing dæmons and the kernel packet forwarding (#0) Linux
Multicast group RTMGRP_IPV4_IFADD 2** 7.29 - 7.39 IPv4 address change of a Network-Interface Linux
Multicast group RTMGRP_IPV4_ROUTE 2** 7.29 - 7.39 IPv4 Routing Table change Linux
Multicast group RTMGRP_IPV6_IFADDR 2** 7.29 - 7.39 IPv6 address change of a Network-Interface Linux
Multicast group RTMGRP_IPV6_ROUTE 2** 7.29 - 7.39 IPv6 Routing Table change Linux
Multicast group RTMGRP_LINK 2** 7.29 - 7.39 Creation / deletion or up / down change of a Network-Interface. Linux
Multicast group RTMGRP_NOTIFY 2** 7.29 - 7.39 Enable notification about changes in subscribed rtnetlink groups Linux
Multicast group RTMGRP_TC 2** 7.29 - 7.39 Packet Scheduler Traffic Control change Linux
Endpoint sock me_pumaglued.ctl 6* 6.87 - 7.50 avmipc_command endpoint of pumaglued AVM
Listens to avmipc @ 2** 7.29 - 7.39 Special event for listeners of nameless private messages. AVM
Listens to avmipc aicmd_listener 2** 7.29 - 7.39 Special event covering all aicmd compatible listeners. AVM
Listens to avmipc edocsisstate 2** 7.29 - 7.39 State of the eDOCSIS router in JSON format. AVM
Listens to avmipc snmp_allowed 2** 7.29 - 7.39 State of the SNMP ports on the DOCSIS WAN interface in JSON format. AVM
Listens to avmipc STATE_ETHSTATUS_FBSTATE 2** 7.29 - 7.39 State of all LAN ports in JSON format. AVM
Listens to avmipc STATE_TR069CM_REQUEST_TR069CM_REQUEST 2** 7.29 - 7.39 State of the DOCSIS modem TR-069 request in JSON format. AVM
Listens to avmipc tr069_allowed 2** 7.29 - 7.39 State of the TR-069 port on the DOCSIS WAN interface in JSON format. AVM
Command cmd pumaglued (avmcmd) ATOM to ARM CPU interconnector for Puma6 / Puma7 models. AVM
Sends avmipc docsis_dhcp_tr069info (avmipc) - 7.29 - 7.39 State of the DHCP range of the DOCSIS TR-069 connection in JSON format.
Sends avmipc docsis_extpktlen - 7.29 State of the DOCSIS sync extended packet length in JSON format. AVM
Sends avmipc docsis_syncstate - 7.29 State of the DOCSIS sync in JSON format. AVM
Sends avmipc edocsis_tr069info - 7.29 - 7.39 State of the eDOCSIS eRouter TR-069 config in JSON format. AVM
Sends avmipc edocsisstate - 7.29 - 7.39 State of the eDOCSIS router in JSON format. AVM
Sends avmipc STATE_TR069CM_REPLY_TR069CM_REPLY - 7.29 - 7.39 State of the DOCSIS modem TR-069 reply in JSON format. AVM
Sends avmipc upc.conf (avmipc) - 7.29 - 7.39 State of the DOCSIS UPC over SNMP config in JSON format.
24 event relations for this command

Logs

This is a subset of the Temp-Files section, filtered for logfiles of pumaglued:

Daily updated index of all pumaglued logfiles found scanning Supportdata-Probes. Last update: 2024-04-19 06:38 GMT.
The label (temp) in the Logfile column shows there are other objects in this wiki using this name.
The Mod column shows the amount of models using the respective logfile. Click the column header to sort by this number.

Source

The names of source files compiled into an executable often help to understand function blocks (and show gaps in the docs).
fw 7.29 source files:

$ strings /sbin/pumaglued | grep -e '\.c$' -e '\.cpp$'

pumaglued.c
docsis.c
tcpproxy.c
./tr069cmcfg.c

This was in an armconsole using cat instead of strings.

Dependencies

Daily updated index of all dependencies of this command. Last update: 2024-04-19 07:32 GMT.
A * in the Mod column marks info from Supportdata-Probes, which will always stay incomplete.

Relation Typ Object Mod Firmware Info Origin
Started by serv pumaglued.service 7 7.19 - 7.62 supervisor service for pumaglued. AVM
Stopped by serv pumaglued.service 3 7.19 - 7.29 supervisor service for pumaglued. AVM
Runs as proc pumaglued (process) 7* 6.87 - 7.61 Inter-CPU connector for the ARM side of Puma6 / Puma7 models. AVM
Registers wdog pumaglued (watchdog) 7* 6.87 - 7.61 Inter-CPU connector for the ARM side of Puma6 / Puma7 models. AVM
Serving port Port-80-tcp 97* 5.04 - 7.90 HTTP - Hypertext Transfer Protocol - Webinterface AVM
Serving port Port-443-tcp 83* 5.08 - 7.90 HTTPS - Hypertext Transfer Protocol over SSL/TLS - Webinterface AVM
Serving port Port-3128-tcp 7* 6.87 - 7.61 TODO AVM
Serving port Port-8089-tcp 110* 4.33 - 7.90 TR-069 ACS initiation port (AVM models). AVM
Serving sock me_pumaglued.ctl 7* 6.87 - 7.61 avmipc_command endpoint of pumaglued AVM
Depends on lib ld.so 4 7.08 - 7.13 Dynamic linker / loader Linux
Depends on lib libavm_event.so 7 7.02 - 7.62 AVM-Events management API AVM
Depends on lib libavmauth.so 7 6.83 - 7.62 Fritzbox authentification helpers AVM
Depends on lib libavmcsock.so 7 6.83 - 7.62 Networking, I/O and helper functions AVM
Depends on lib libavmfbstate.so 7 7.02 - 7.62 IPC fritzbox state notification AVM
Depends on lib libavmhmac.so 7 6.83 - 7.62 HMAC / SHA / MD5 hashing. AVM
Depends on lib libavmwdt.so 1 7.61 - 7.62 AVM-Watchdogs management API AVM
Depends on lib libboxlib.so 7 6.83 - 7.62 Box status, logging and statistics functions AVM
Depends on lib libc.so 7 6.83 - 7.62 Standard C library Linux
Depends on lib libcore.so 1 7.61 - 7.62 Collects the MAC addresses of the device it's running on AVM
Depends on lib libdl.so 7 6.83 - 7.62 Dynamic linking library Linux
Depends on lib libdputil.so 6 6.83 - 7.29 DataPipe / packet utilities AVM
Depends on lib libdsld_sync.so 6 7.39 - 7.62 TODO Linux
Depends on lib libewnwlinux.so 7 6.83 - 7.62 Linux networking functions AVM
Depends on lib libewnwnet.so 6 6.83 - 7.29 Internet helper functions AVM
Depends on lib libfbconf.so 1 7.61 - 7.62 TODO AVM
Depends on lib libpcap.so 6 7.39 - 7.62 Network traffic / packet capture Linux
Depends on lib libpthread.so 7 6.83 - 7.62 POSIX threading library Linux
Depends on lib libpumacmflt.so 7 7.19 - 7.62 Cable modem filtering API Puma
Depends on lib librt.so 7 6.83 - 7.62 POSIX realtime extensions library Linux
Depends on lib libsvctl.so 7 7.19 - 7.62 supervisor notification library AVM
Depends on lib libwdt.so 6 6.83 - 7.57 AVM-Watchdogs management API AVM
Depends on lib libwebsrv.so 7 6.83 - 7.62 HTTP / HTTPS webserver and tools. AVM
Depends on lib libz.so 7 6.110 - 7.62 Zlib compressor / decompressor Linux
33 dependencies for this command

Model-Matrix

Daily updated index of the presence, path and size of this command for each model. Last update: 2024-04-19 05:14 GMT.
Showing all models using this command. Click any column header (click-wait-click) to sort the list by the respective data.
The (main/scrpn/boot/arm/prx/atom) label in the Model column shows which CPU is meant for models with multiple Linux instances.
Note that this list is merged from Firmware-Probes of all known AVM firmware for a model, including Recovery.exe and Labor-Files.

Model Firmware Path Size
FRITZ!Box 6430 Cable (arm) 6.84 - 7.29 /sbin 32.0k - 38.9k
FRITZ!Box 6490 Cable (arm) 6.83 - 7.51 /sbin 27.7k - 38.9k
FRITZ!Box 6590 Cable (arm) 6.83 - 7.57 /sbin 27.7k - 38.9k
FRITZ!Box 6591 Cable (arm) 7.12 - 7.57 /sbin 35.7k - 43.1k
FRITZ!Box 6660 Cable (arm) 7.14 - 7.57 /sbin 35.7k - 40.0k
FRITZ!Box 6670 Cable (arm) 7.61 - 7.62 /sbin 39.9k
FRITZ!Box 6690 Cable (arm) 7.28 - 7.57 /sbin 35.8k - 40.0k
7 models use this command

Symbols

Daily updated index of all symbols of this command. Last update: 2024-04-19 07:32 GMT.

Firmware Symbol
7.08 - 7.13 main
1 symbol for this command

SMW-Browser

Information is currently being retrieved from the backend.