More flexibility for the fallback interface.
When there's a failure to send a packet in the fallback interface the destination is unreachable and therefore the source should be notified.
This commit is contained in:
parent
aecb591d12
commit
b3f6019924
@ -586,7 +586,16 @@ tcpip_ipv6_output(void)
|
|||||||
/* This should be copied from the ext header... */
|
/* This should be copied from the ext header... */
|
||||||
UIP_IP_BUF->proto = proto;
|
UIP_IP_BUF->proto = proto;
|
||||||
}
|
}
|
||||||
UIP_FALLBACK_INTERFACE.output();
|
/* Inform the other end that the destination is not reachable. If it's
|
||||||
|
* not informed routes might get lost unexpectedly until there's a need
|
||||||
|
* to send a new packet to the peer */
|
||||||
|
if(UIP_FALLBACK_INTERFACE.output() < 0) {
|
||||||
|
PRINTF("FALLBACK: output error. Reporting DST UNREACH\n");
|
||||||
|
uip_icmp6_error_output(ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_ADDR, 0);
|
||||||
|
uip_flags = 0;
|
||||||
|
tcpip_ipv6_output();
|
||||||
|
return;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
PRINTF("tcpip_ipv6_output: Destination off-link but no route\n");
|
PRINTF("tcpip_ipv6_output: Destination off-link but no route\n");
|
||||||
#endif /* !UIP_FALLBACK_INTERFACE */
|
#endif /* !UIP_FALLBACK_INTERFACE */
|
||||||
|
@ -1429,7 +1429,13 @@ extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];
|
|||||||
|
|
||||||
struct uip_fallback_interface {
|
struct uip_fallback_interface {
|
||||||
void (*init)(void);
|
void (*init)(void);
|
||||||
void (*output)(void);
|
/**
|
||||||
|
* \retval >=0
|
||||||
|
* in case of success
|
||||||
|
* \retval <0
|
||||||
|
* in case of failure
|
||||||
|
*/
|
||||||
|
int (*output)(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
#if UIP_CONF_ICMP6
|
#if UIP_CONF_ICMP6
|
||||||
|
Loading…
Reference in New Issue
Block a user