Auteur Sujet: Option information-spécifique au vendeur (en C)  (Lu 2143 fois)

0 Membres et 1 Invité sur ce sujet

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 760
Option information-spécifique au vendeur (en C)
« Réponse #12 le: 30 mai 2025 à 17:02:15 »
Je vais reprendre l'implémentation de mon code. Il s'avère que je n'avais pas bien compris certains concepts.
J'espère tout recoder durant ce week-end en exploitant l'API « blob ». Pour les tests et la validation je suis moins
sûr. J'essayerais de pousser vers le dépôt officiel dès que possible. Si mon code est intégré dans OpenWrt, il n'est
pas sûr qu'il intègre directement la version de production. Car on constate que les archives (commits en anglais)
sont différentes.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 760
Option information-spécifique au vendeur (en C)
« Réponse #13 le: 13 juin 2025 à 19:17:20 »
J'aurais normalement abouti à la bonne solution d'ici peu.

Cela fut une grosse prise de tête. Diverses implémentations trop complexes. Et avec un degré d'abstraction insuffisant.
Perdu, quelque peu incompétent, et pas d'idée.

Merci aux IAs pour leurs suggestions d'amélioration. Dommage que je n'ai pas eu de retours humains. Dommage que
certains opérateurs m'aient apparemment censuré (black-listé ?) sur les canaux de communication OpenWrt. Je suis
sûrement trop nul mais est-ce une bonne raison ? Dégueulasse !

Au final, la solution retenue paraît plutôt simple. On parse les chaînes de caractères, on extrait les infos, on les stocke
dans une structure « option ». On relie les options dans une liste chaînée par vendeur. Les vendeurs sont aussi reliés.
On parcours les divers vendeurs. On construit un tampon par vendeur. On peut accèder à n'importe quel champ assez
simplement sans avoir à gérer l'accès à la mémoire en fonction du protocole. Même pas besoin d'union pour gérer le
boutisme (aka endianness). Même pas besoin de l'API OpenWrt blob pour simplifier l'allocation et l'accès mémoire (pas
simple d'ailleurs car le tampon résultant n'est pas identique au résultat souhaité et cela duplique du code).

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 760
Option information-spécifique au vendeur (en C)
« Réponse #14 le: 28 juin 2025 à 06:26:43 »
J'ai rencontré un problème majeur de sécurité. Je mets en pause l'intégration de cette fonctionnalité dans OpenWrt.
Il y a encore des choses à rectifier dans la version actuelle. La mémoire n'est pas libérée lors de la reconfiguration
des interfaces.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 760
Option information-spécifique au vendeur (en C)
« Réponse #15 le: 30 août 2025 à 10:34:49 »
De l'eau a coulé sous les ponts.

Finalement, mon implémentation est encore trop compliquée. On peut le constater en analysant l'implémentation odhcpd de prplos.
J'ai conçu mon implémentation à partir d'une représentation générique mais avec une mauvaise compréhension du code existant.

Notamment, ce qui ne va pas dans mon implémentation, c'est qu'un seul vendeur par interface sera défini dans la configuration.
Chaque interface est configurée séparément. Mais dans mon code tous les vendeurs sont regroupés dans une table de hachage.
Lire le passage ci-dessous.

Citation de: RFC8415
Multiple instances of the Vendor-specific Information option may appear in a DHCP message. Each instance of the option is interpreted according to the option codes defined by the vendor identified by the
Enterprise Number in that option. Servers and clients MUST NOT send more than one instance of the Vendor-specific Information option with the same Enterprise Number. Each instance of the Vendor-specific
Information option MAY contain multiple sub-options.

A client that is interested in receiving a Vendor-specific Information option:


  • MUST specify the Vendor-specific Information option in an Option Request option.
  • MAY specify an associated Vendor Class option (see Section 21.16).
  • MAY specify the Vendor-specific Information option with appropriate data.

Source : 21.17.  Vendor-specific Information Option

Je suis à court d'idées. Je ne perçois pas vraiment comment reprendre mon code pour tenir compte du RFC (l'extrait ci-dessus) ou
s'il faudrait partir sur la même base que l'implémentation de l'option spécifique au vendeur de la variante odhcpd de prplos tout en
maintenant l'intégration de l'option en DHCPv4.