| 525 | |
| 526 | |
| 527 | class rtmsg_rtattr(Packet): |
| 528 | fields_desc = [ |
| 529 | FieldLenField( |
| 530 | "rta_len", None, length_of="rta_data", fmt="=H", adjust=lambda _, x: x + 4 |
| 531 | ), |
| 532 | EnumField( |
| 533 | "rta_type", |
| 534 | 0, |
| 535 | { |
| 536 | 0x00: "RTA_UNSPEC", |
| 537 | 0x01: "RTA_DST", |
| 538 | 0x02: "RTS_SRC", |
| 539 | 0x03: "RTS_IIF", |
| 540 | 0x04: "RTS_OIF", |
| 541 | 0x05: "RTA_GATEWAY", |
| 542 | 0x06: "RTA_PRIORITY", |
| 543 | 0x07: "RTA_PREFSRC", |
| 544 | 0x08: "RTA_METRICS", |
| 545 | 0x09: "RTA_MULTIPATH", |
| 546 | 0x0B: "RTA_FLOW", |
| 547 | 0x0C: "RTA_CACHEINFO", |
| 548 | 0x0F: "RTA_TABLE", |
| 549 | 0x10: "RTA_MARK", |
| 550 | 0x11: "RTA_MFC_STATS", |
| 551 | 0x12: "RTA_VIA", |
| 552 | 0x13: "RTA_NEWDST", |
| 553 | 0x14: "RTA_PREF", |
| 554 | 0x15: "RTA_ENCAP_TYPE", |
| 555 | 0x16: "RTA_ENCAP", |
| 556 | 0x17: "RTA_EXPIRES", |
| 557 | 0x18: "RTA_PAD", |
| 558 | 0x19: "RTA_UID", |
| 559 | 0x1A: "RTA_TTL_PROPAGATE", |
| 560 | 0x1B: "RTA_IP_PROTO", |
| 561 | 0x1C: "RTA_SPORT", |
| 562 | 0x1D: "RTA_DPORT", |
| 563 | 0x1E: "RTA_NH_ID", |
| 564 | }, |
| 565 | fmt="=H", |
| 566 | ), |
| 567 | PadField( |
| 568 | MultipleTypeField( |
| 569 | [ |
| 570 | # RTA_DST, RTA_SRC, RTA_PREFSRC, RTA_GATEWAY |
| 571 | ( |
| 572 | IPField("rta_data", "0.0.0.0"), |
| 573 | lambda pkt: pkt.parent |
| 574 | and pkt.parent.rtm_family == 2 |
| 575 | and pkt.rta_type in [0x01, 0x02, 0x05, 0x07], |
| 576 | ), |
| 577 | ( |
| 578 | IP6Field("rta_data", "::"), |
| 579 | lambda pkt: pkt.parent |
| 580 | and pkt.parent.rtm_family == 10 |
| 581 | and pkt.rta_type in [0x01, 0x02, 0x05, 0x07], |
| 582 | ), |
| 583 | # RTS_OIF, RTA_PRIORITY |
| 584 | ( |
no test coverage detected