| @@ -399,6 +399,7 @@ enum rtattr_type_t { · 398 unmodified lines |
| 399 | RTA_DPORT, | 399 | RTA_DPORT, |
| 400 | RTA_NH_ID, | 400 | RTA_NH_ID, |
| 401 | RTA_FLOWLABEL, | 401 | RTA_FLOWLABEL, |
| | 402 | RTA_DEL_REASON, |
| 402 | __RTA_MAX | 403 | __RTA_MAX |
| 403 | }; | 404 | }; |
| 404 | | 405 | |
| @@ -407,6 +408,30 @@ enum rtattr_type_t { · 2 unmodified lines |
| 407 | #define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg)))) | 408 | #define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg)))) |
| 408 | #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg)) | 409 | #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg)) |
| 409 | | 410 | |
| | 411 | /* RTA_DEL_REASON: why the kernel deleted the route. u32. |
| | 412 | * Emitted only on RTM_DELROUTE notifications, and only when the deletion |
| | 413 | * path records a cause. Absence means either an older kernel or a |
| | 414 | * deletion path that does not (yet) record its cause - consumers must |
| | 415 | * treat "absent" and "unspec" identically. New causes may be appended. |
| | 416 | * Currently only IPv6 deletion paths record a cause. |
| | 417 | * |
| | 418 | * The attribute is notification-only: the kernel rejects it in |
| | 419 | * requests, so a notification must not be echoed back verbatim. |
| | 420 | * |
| | 421 | * The value space is family-agnostic: a value must never be |
| | 422 | * reinterpreted per address family. A cause that only one family can |
| | 423 | * produce still gets its own value rather than reusing another |
| | 424 | * family's. |
| | 425 | */ |
| | 426 | enum rt_del_reason { |
| | 427 | RT_DEL_REASON_UNSPEC, /* cause not recorded */ |
| | 428 | RT_DEL_REASON_EXPIRED, /* RTF_EXPIRES lifetime ran out (GC) */ |
| | 429 | RT_DEL_REASON_RA_WITHDRAWN, /* zero-lifetime RA / PIO / RIO */ |
| | 430 | __RT_DEL_REASON_MAX |
| | 431 | }; |
| | 432 | |
| | 433 | #define RT_DEL_REASON_MAX (__RT_DEL_REASON_MAX - 1) |
| | 434 | |
| 410 | /* RTM_MULTIPATH --- array of struct rtnexthop. | 435 | /* RTM_MULTIPATH --- array of struct rtnexthop. |
| 411 | * | 436 | * |
| 412 | * "struct rtnexthop" describes all necessary nexthop information, | 437 | * "struct rtnexthop" describes all necessary nexthop information, |