socket.AF_PACKET doc: proto is *not* in network byte order
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 36k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Documentation
The documentation of socket.AF_PACKET says that the value of proto in the address representation must be in network-byte-order:
https://github.com/python/cpython/blame/v3.12.0a3/Doc/library/socket.rst#L196
Value must be in network-byte-order.
This is incorrect. It is true that the corresponding Linux field sll_protocol is in network byte order (see packet(7)), but Python automatically converts to/from host byte order:
https://github.com/python/cpython/blob/v3.12.0a3/Modules/socketmodule.c#L1483
https://github.com/python/cpython/blob/v3.12.0a3/Modules/socketmodule.c#L2104
Note: This applies to addresses passed to socket.bind() and returned from socket.recvfrom(), but does not apply to the proto parameter of socket.socket() -- Python doesn't automatically convert it, so the user must supply a value in network byte order (when using AF_PACKET). It might be a good idea to document this, e.g. the documentation of ETH_P_ALL could mention that it needs to be converted using socket.htons() before passing to socket.socket().
Bonus typo:
https://github.com/python/cpython/blame/v3.12.0a3/Doc/library/socket.rst#L188
The packets are represented by the tuple
"packets" is inaccurate and should be changed to "addresses" or "sockets".
Linked PRs
- gh-154741
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Ouvrez Doc/library/socket.rst à la représentation des adresses AF_PACKET et examinez les emplacements cités dans Modules/socketmodule.c concernant le comportement de l’ordre des octets. Mettez à jour la documentation afin de distinguer les adresses de bind/recvfrom du paramètre proto de socket(), et corrigez la formulation « packets » ; le travail est terminé lorsque les conversions et la terminologie documentées correspondent à l’implémentation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- documentation, networking
- Type d'issue
- Documentation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 35/100