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 september. Please use hippie2000@webnmail.de instead.
Property:pumaglued (avmcmd)
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 | Gallery |
Startup-Scr | Hotplug-Scr | BusyBox-Cmds | Bash-Cmds | AVM-Cmds | Chipset-Cmds | Linux-Cmds | Shared-Libs | Kernel-Mods | Research |
Name-Collision - multiple objects in this wiki use the name pumaglued!
|
AVM-Command
Command: | pumaglued (avmcmd) - type Exec | Wiki | Freetz | IPPF | whmf | AVM | Web |
Location: | Shell-Commands >> AVM-Commands - Origin: AVM | ||||||
Path: | Release: /sbin Lab+Rel: /sbin | ||||||
Properties: | Size: 27.7k - 43.1k - Firmware: 6.83 - 7.50 | ||||||
Function: | ATOM to ARM CPU interconnector for Puma6 / Puma7 models. |
Goto: Examples - Endpoints - Events - 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:
- aicmd remote listener
- remote shell
- TCP proxy
- remote supportdata
- remote capture
- remote status
- HTTP webserver
- Port forwarding
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 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
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-02-05 06:36 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.29 | 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) | 6 | 6.83 - 7.50 | 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 |
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: 2023-02-05 07:16 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 | 6 | 7.19 - 7.50 | 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) | 6* | 6.87 - 7.29 | ATOM to ARM CPU interconnector for Puma6 / Puma7 models. | AVM |
Registers | wdog | pumaglued (watchdog) | 6* | 6.87 - 7.29 | ATOM to ARM CPU interconnector for Puma6 / Puma7 models. | AVM |
Serving | port | Port-80-tcp | 95* | 5.04 - 7.51 | HTTP - Hypertext Transfer Protocol - Webinterface | AVM |
Serving | port | Port-443-tcp | 81* | 5.08 - 7.51 | HTTPS - Hypertext Transfer Protocol over SSL/TLS - Webinterface | AVM |
Serving | port | Port-3128-tcp | 6* | 6.87 - 7.29 | TODO | AVM |
Serving | port | Port-8089-tcp | 109* | 4.33 - 7.51 | TR-069 ACS initiation port (AVM models). | AVM |
Serving | sock | me_pumaglued.ctl | 6* | 6.87 - 7.29 | 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 | 6 | 7.02 - 7.50 | AVM-Events management API | AVM |
Depends on | lib | libavmauth.so | 6 | 6.83 - 7.50 | Fritzbox authentification helpers | AVM |
Depends on | lib | libavmcsock.so | 6 | 6.83 - 7.50 | Networking, I/O and helper functions | AVM |
Depends on | lib | libavmfbstate.so | 6 | 7.02 - 7.50 | IPC fritzbox state notification | AVM |
Depends on | lib | libavmhmac.so | 6 | 6.83 - 7.50 | HMAC / SHA / MD5 hashing. | AVM |
Depends on | lib | libboxlib.so | 6 | 6.83 - 7.50 | Box status, logging and statistics functions | AVM |
Depends on | lib | libc.so | 6 | 6.83 - 7.50 | Standard C library | Linux |
Depends on | lib | libdl.so | 6 | 6.83 - 7.50 | Dynamic linking library | Linux |
Depends on | lib | libdputil.so | 6 | 6.83 - 7.29 | DataPipe / packet utilities | AVM |
Depends on | lib | libdsld_sync.so | 5 | 7.39 - 7.50 | TODO | Linux |
Depends on | lib | libewnwlinux.so | 6 | 6.83 - 7.50 | Linux networking functions | AVM |
Depends on | lib | libewnwnet.so | 6 | 6.83 - 7.29 | Internet helper functions | AVM |
Depends on | lib | libpcap.so | 5 | 7.39 - 7.50 | Network traffic / packet capture | Linux |
Depends on | lib | libpthread.so | 6 | 6.83 - 7.50 | POSIX threading library | Linux |
Depends on | lib | libpumacmflt.so | 6 | 7.19 - 7.50 | Cable modem filtering API | Puma |
Depends on | lib | librt.so | 6 | 6.83 - 7.50 | POSIX realtime extensions library | Linux |
Depends on | lib | libsvctl.so | 6 | 7.19 - 7.50 | supervisor notification library | AVM |
Depends on | lib | libwdt.so | 6 | 6.83 - 7.50 | AVM-Watchdogs management API | AVM |
Depends on | lib | libwebsrv.so | 6 | 6.83 - 7.50 | HTTP / HTTPS webserver and tools. | AVM |
Depends on | lib | libz.so | 6 | 6.110 - 7.50 | Zlib compressor / decompressor | Linux |
30 dependencies for this command |
Model-Matrix
Daily updated index of the presence, path and size of this command for each model. Last update: 2023-02-05 05:53 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.39 | /sbin | 27.7k - 38.9k |
FRITZ!Box 6590 Cable (arm) | 6.83 - 7.39 | /sbin | 27.7k - 38.9k |
FRITZ!Box 6591 Cable (arm) | 7.12 - 7.39 | /sbin | 35.7k - 43.1k |
FRITZ!Box 6660 Cable (arm) | 7.14 - 7.39 | /sbin | 35.7k - 39.9k |
FRITZ!Box 6690 Cable (arm) | 7.28 - 7.50 | /sbin | 35.8k - 39.9k |
6 models use this command |
Symbols
Daily updated index of all symbols of this command. Last update: 2023-02-05 07:16 GMT.
Firmware | Symbol |
---|---|
7.08 - 7.13 | main |
1 symbol for this command |