Skip to content

fix(internet): align IGMP id() with the family-grouping ruling (#2512) - #2518

Merged
JarryShaw merged 1 commit into
mainfrom
fix/2512-igmp-id
Nov 1, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
fix/2512-igmp-id

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

What is the purpose of your pull request?

  • fix — corrects a defect

Description of your pull request and other information

Closes #2512. #2465 and #2506 both edited igmp.py, and the merge left main contradicting protocol-family-grouping.rst.

  • IGMPv3.id(): ('IGMP', 'IGMPv3') → ('IGMPv3',), narrowed to itself (RFC 3376 names it with a version).
  • IGMP.id(): ('IGMP', 'IGMPv1', 'IGMPv2', 'IGMPv3') → ('IGMP', 'IGMPv2', 'IGMPv3'). No member's id() is 'IGMPv1' since fix(internet): narrow IGMP's id() to self, per owner's post-merge ruling #2506; that selector still works through its registry key.
  • protocol-family-grouping.rst: IGMPv3 is added to Member Shapes and Canonical Names.
  • Tests: id() of all four classes, plus the selector semantics on parsed v1/v2/v3 layers. 13 of them fail without the fix.

Ran test_igmp_unit.py (68 passed), the dispatch-registry and conventions-doc-claims tests, and the plain-unittest ordering run.

- IGMPv3.id() is ('IGMPv3',), narrowed to self; RFC 3376 names it with a
  version.
- IGMP.id() is ('IGMP', 'IGMPv2', 'IGMPv3'): each member's canonical name,
  so no id() carries 'IGMPv1'. Annotations and docstrings follow.
- protocol-family-grouping.rst: IGMPv3 joins the member-shapes table's
  narrow row and the Canonical Names IGMP paragraph.
- test_igmp_unit.py: pins all four id() tuples, and the selector
  semantics on parsed layers -- in, [] and protochain by key and class,
  and string ==.
@JarryShaw JarryShaw added fix Pull requests that fix a defect (fix: subject prefix) review: good-to-go Cross-review at the current head says ready; CI state is separate labels Nov 1, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

Cross-review (Sonnet) at d9225b78e: GOOD TO GO. Re-derived every class's id() and the Selector Matching semantics on 8 parsed v1/v2/v3 layers. Reverting only igmp.py/igmpv3.py makes 13 tests fail. No stale pin of the old tuples remains anywhere in the repo.

One pre-existing gap will be folded in as a follow-up commit here. The IGMP.alias docstring and igmp.rst still list IGMPv1 as an alias, but IGMPv1's alias is IGMP. The index.rst Mermaid graph and ext.rst's family table lack IGMPv3. igmp.rst has no automethod:: id, so :meth:IGMP.id()`` on the conventions page doesn't resolve.

@JarryShaw JarryShaw added fix Pull requests that fix a defect (fix: subject prefix) review: good-to-go Cross-review at the current head says ready; CI state is separate labels Nov 1, 2026
@JarryShaw JarryShaw moved this to In review in PyPCAPKit Nov 1, 2026
@JarryShaw
JarryShaw merged commit c43cd1a into main Nov 1, 2026
61 checks passed
@JarryShaw
JarryShaw deleted the fix/2512-igmp-id branch November 1, 2026 06:48
@github-project-automation github-project-automation Bot moved this from In review to Done in PyPCAPKit Nov 1, 2026
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Nov 1, 2026
JarryShaw added a commit that referenced this pull request Nov 1, 2026
…#2449)

- IGMP: add IGMPv3.id() ('IGMPv3',) and the base's ('IGMP', 'IGMPv2',
  'IGMPv3') from #2518; version selection is by message type, except a
  Membership Query, split by length and, at 8 octets, by Max Resp Time.
- LinuxSLL: ARPHRD names only the <linux/if_arp.h> values its crawler's
  table lists; any other, ARPHRD_ETHER included, reads as Unassigned.
- IPv6 extension-header walk: the library no longer passes
  IPv6_Ext.read() an error=, so IPv6_Ext.error is None unless a caller
  supplies one; the Raw layer's info.error holds the failure.
- CHANGELOG.md regenerated; util/changelog_md.py --check passes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fix Pull requests that fix a defect (fix: subject prefix)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

fix(internet): IGMPv3 and IGMP base id() disagree with the family-grouping ruling

1 participant