Re: [FRnOG] [MISC] ifAlias sur net-snmp (tentative de patch)

2018-09-11 Par sujet Xavier Claude
Le mardi 11 septembre 2018 à 19:03 +0200, Alarig Le Lay a écrit :
> Hello,
> 
> Pour commencer, je ne suis pas programmeur pour deux sous, tout ce
> qui
> suit est fait au pur feeling.
> 
> net-snmp a la très fâcheuse tendance à ne pas remplir la table
> ifAlias :
> $ snmpwalk -v2c -c public judicael-ovpn2.grif ifAlias
> IF-MIB::ifAlias.1 = STRING:
> IF-MIB::ifAlias.2 = STRING:
> IF-MIB::ifAlias.3 = STRING:
> IF-MIB::ifAlias.4 = STRING:
> IF-MIB::ifAlias.5 = STRING:
> IF-MIB::ifAlias.6 = STRING:
> 
> Quand bien même on a bien renseigné l’alias avec iproute2 :
> # ip link show eth1
> 3: eth1:  mtu 1500 qdisc noop state DOWN mode
> DEFAULT group default qlen 1000
> link/ether 2a:6f:f1:84:22:11 brd ff:ff:ff:ff:ff:ff
> alias Core: Interco VLAN 30
> 
> Aujourd’hui j’ai fini par me décider à enfin patcher ça. J’ai
> commencé
> par ré-écrire la fonction pour ifDescr (en copiant les autres
> fonctions
> et en faisant marcher mon cerveau) et là j’avais bien ce que je
> voulais :
> $ snmpwalk -On -v2c -c public judicael-ovpn2.grif ifDescr
> .1.3.6.1.2.1.2.2.1.2.1 = STRING: lo
> .1.3.6.1.2.1.2.2.1.2.2 = STRING: eth0
> .1.3.6.1.2.1.2.2.1.2.3 = STRING: Core: Interco VLAN 30
> .1.3.6.1.2.1.2.2.1.2.4 = STRING: eth2
> .1.3.6.1.2.1.2.2.1.2.5 = STRING: tun-tcp0
> .1.3.6.1.2.1.2.2.1.2.6 = STRING: tun-udp0
> 
> Mais ça se gâte quand je veux faire en sorte d’avoir ça sur ifAlias,
> snmpd crashe :
> # /usr/sbin/snmpd -f -p /var/run/snmpd.pid -I -smux
> free(): invalid pointer
> Aborted
> 
> Voici les patches que j’ai réussi à pondre :
> https://paste.swordarmor.fr/NvJc
> Là dedans, _arch_interface_alias_get marche avec ifDescr si je la
> renomme en _arch_interface_description_get et que je remplace
> 'entry->alias' par 'entry->descr'.
> 
> À mon avis, le crash est dû au bloc @@ -721,6 +725,17 @@ de
> agent/mibgroup/if-mib/data_access/interface.c mais comme j’y pige pas
> grand chose, je ne suis pas sûr de moi.
> 
> Est-ce que quelqu’un aurait des pires, voire carrément la solution ?

Tu devrais lancer snmpd avec valgrind ou gdb pour voir quel est le free
qui déclenche ton erreur.


---
Liste de diffusion du FRnOG
http://www.frnog.org/


Re: [FRnOG] [MISC] ifAlias sur net-snmp (tentative de patch)

2018-09-11 Par sujet Arnaud Launay
Le Tue, Sep 11, 2018 at 07:03:24PM +0200, Alarig Le Lay a écrit:
> net-snmp a la très fâcheuse tendance à ne pas remplir la table ifAlias :

https://docs.observium.org/device_linux/#using-ifalias-support

Ca devrait faire ce que tu veux non ? En tout cas ici ça marche
-- par contre ça n'utilise pas iproute2, ça parse
/etc/network/interfaces . Mais tu devrais pouvoir t'en
inspirer... ?

Apparemment chez Cumu ils font la même en python:
https://github.com/CumulusNetworks/cldemo-archive/blob/master/cldemo-wbench-librenms-base-puppet/debian/etc/puppet/modules/snmpd/files/snmpd.conf
pass_persist .1.3.6.1.2.1.31.1.1.1.18 /usr/share/snmp/snmpifAlias_pp.py


Arnaud.


---
Liste de diffusion du FRnOG
http://www.frnog.org/


[FRnOG] [MISC] ifAlias sur net-snmp (tentative de patch)

2018-09-11 Par sujet Alarig Le Lay
Hello,

Pour commencer, je ne suis pas programmeur pour deux sous, tout ce qui
suit est fait au pur feeling.

net-snmp a la très fâcheuse tendance à ne pas remplir la table ifAlias :
$ snmpwalk -v2c -c public judicael-ovpn2.grif ifAlias
IF-MIB::ifAlias.1 = STRING:
IF-MIB::ifAlias.2 = STRING:
IF-MIB::ifAlias.3 = STRING:
IF-MIB::ifAlias.4 = STRING:
IF-MIB::ifAlias.5 = STRING:
IF-MIB::ifAlias.6 = STRING:

Quand bien même on a bien renseigné l’alias avec iproute2 :
# ip link show eth1
3: eth1:  mtu 1500 qdisc noop state DOWN mode DEFAULT 
group default qlen 1000
link/ether 2a:6f:f1:84:22:11 brd ff:ff:ff:ff:ff:ff
alias Core: Interco VLAN 30

Aujourd’hui j’ai fini par me décider à enfin patcher ça. J’ai commencé
par ré-écrire la fonction pour ifDescr (en copiant les autres fonctions
et en faisant marcher mon cerveau) et là j’avais bien ce que je
voulais :
$ snmpwalk -On -v2c -c public judicael-ovpn2.grif ifDescr
.1.3.6.1.2.1.2.2.1.2.1 = STRING: lo
.1.3.6.1.2.1.2.2.1.2.2 = STRING: eth0
.1.3.6.1.2.1.2.2.1.2.3 = STRING: Core: Interco VLAN 30
.1.3.6.1.2.1.2.2.1.2.4 = STRING: eth2
.1.3.6.1.2.1.2.2.1.2.5 = STRING: tun-tcp0
.1.3.6.1.2.1.2.2.1.2.6 = STRING: tun-udp0

Mais ça se gâte quand je veux faire en sorte d’avoir ça sur ifAlias,
snmpd crashe :
# /usr/sbin/snmpd -f -p /var/run/snmpd.pid -I -smux
free(): invalid pointer
Aborted

Voici les patches que j’ai réussi à pondre :
https://paste.swordarmor.fr/NvJc
Là dedans, _arch_interface_alias_get marche avec ifDescr si je la
renomme en _arch_interface_description_get et que je remplace
'entry->alias' par 'entry->descr'.

À mon avis, le crash est dû au bloc @@ -721,6 +725,17 @@ de
agent/mibgroup/if-mib/data_access/interface.c mais comme j’y pige pas
grand chose, je ne suis pas sûr de moi.

Est-ce que quelqu’un aurait des pires, voire carrément la solution ?

Merci,
-- 
Alarig


---
Liste de diffusion du FRnOG
http://www.frnog.org/