RFC 4443 has defined two additional codes for ICMPv6 type 1 (destination unreachable) messages: 5 - Source address failed ingress/egress policy 6 - Reject route to destination Now they are treated as protocol error and icmpv6_err_convert() converts them to EPROTO. RFC 4443 says: "Codes 5 and 6 are more informative subsets of code 1." Treat codes 5 and 6 as code 1 (EACCES) Btw, connect() returning -EPROTO confuses firefox, so that fallback to other/IPv4 addresses does not work: https://bugzilla.mozilla.org/show_bug.cgi?id=910773
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -115,6 +115,8 @@ struct icmp6hdr { · 114 unmodified lines | ||
| 115 | 115 | #define ICMPV6_NOT_NEIGHBOUR 2 |
| 116 | 116 | #define ICMPV6_ADDR_UNREACH 3 |
| 117 | 117 | #define ICMPV6_PORT_UNREACH 4 |
| 118 | +#define ICMPV6_POLICY_FAIL 5 | |
| 119 | +#define ICMPV6_REJECT_ROUTE 6 | |
| 118 | 120 | |
| 119 | 121 | /* |
| 120 | 122 | * Codes for Time Exceeded |