* ICMPv6: treat dest unreachable codes 5 and 6 as EACCES, not EPROTO
@ 2013-08-30 9:18 Jiri Bohac
2013-09-01 18:54 ` Hannes Frederic Sowa
2013-09-04 2:12 ` David Miller
0 siblings, 2 replies; 3+ messages in thread
From: Jiri Bohac @ 2013-08-30 9:18 UTC (permalink / raw)
To: Hideaki YOSHIFUJI, David S. Miller; +Cc: netdev
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
Signed-off-by: Jiri Bohac <jbohac@suse.cz>
diff --git a/include/uapi/linux/icmpv6.h b/include/uapi/linux/icmpv6.h
index e0133c7..590beda 100644
--- a/include/uapi/linux/icmpv6.h
+++ b/include/uapi/linux/icmpv6.h
@@ -115,6 +115,8 @@ struct icmp6hdr {
#define ICMPV6_NOT_NEIGHBOUR 2
#define ICMPV6_ADDR_UNREACH 3
#define ICMPV6_PORT_UNREACH 4
+#define ICMPV6_POLICY_FAIL 5
+#define ICMPV6_REJECT_ROUTE 6
/*
* Codes for Time Exceeded
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index 7cfc8d2..5b341bf 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -940,6 +940,14 @@ static const struct icmp6_err {
.err = ECONNREFUSED,
.fatal = 1,
},
+ { /* POLICY_FAIL */
+ .err = EACCES,
+ .fatal = 1,
+ },
+ { /* REJECT_ROUTE */
+ .err = EACCES,
+ .fatal = 1,
+ },
};
int icmpv6_err_convert(u8 type, u8 code, int *err)
@@ -951,7 +959,7 @@ int icmpv6_err_convert(u8 type, u8 code, int *err)
switch (type) {
case ICMPV6_DEST_UNREACH:
fatal = 1;
- if (code <= ICMPV6_PORT_UNREACH) {
+ if (code < ARRAY_SIZE(tab_unreach)) {
*err = tab_unreach[code].err;
fatal = tab_unreach[code].fatal;
}
--
Jiri Bohac <jbohac@suse.cz>
SUSE Labs, SUSE CZ
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: ICMPv6: treat dest unreachable codes 5 and 6 as EACCES, not EPROTO
2013-08-30 9:18 ICMPv6: treat dest unreachable codes 5 and 6 as EACCES, not EPROTO Jiri Bohac
@ 2013-09-01 18:54 ` Hannes Frederic Sowa
2013-09-04 2:12 ` David Miller
1 sibling, 0 replies; 3+ messages in thread
From: Hannes Frederic Sowa @ 2013-09-01 18:54 UTC (permalink / raw)
To: Jiri Bohac; +Cc: Hideaki YOSHIFUJI, David S. Miller, netdev
On Fri, Aug 30, 2013 at 11:18:45AM +0200, Jiri Bohac wrote:
> 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
>
>
> Signed-off-by: Jiri Bohac <jbohac@suse.cz>
I would also propose it for stable.
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Thanks,
Hannes
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ICMPv6: treat dest unreachable codes 5 and 6 as EACCES, not EPROTO
2013-08-30 9:18 ICMPv6: treat dest unreachable codes 5 and 6 as EACCES, not EPROTO Jiri Bohac
2013-09-01 18:54 ` Hannes Frederic Sowa
@ 2013-09-04 2:12 ` David Miller
1 sibling, 0 replies; 3+ messages in thread
From: David Miller @ 2013-09-04 2:12 UTC (permalink / raw)
To: jbohac; +Cc: yoshfuji, netdev
From: Jiri Bohac <jbohac@suse.cz>
Date: Fri, 30 Aug 2013 11:18:45 +0200
> 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
>
> Signed-off-by: Jiri Bohac <jbohac@suse.cz>
Applied and queued up for -stable, thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-09-04 2:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-30 9:18 ICMPv6: treat dest unreachable codes 5 and 6 as EACCES, not EPROTO Jiri Bohac
2013-09-01 18:54 ` Hannes Frederic Sowa
2013-09-04 2:12 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).