inetpeer: Add redirect and PMTU discovery cached info.
Validity of the cached PMTU information is indicated by it's expiration value being non-zero, just as per dst->expires. The scheme we will use is that we will remember the pre-ICMP value held in the metrics or route entry, and then at expiration time we will restore that value. In this way PMTU expiration does not kill off the cached route as is done currently. Redirect information is permanent, or at least until another redirect is received. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									7a71ed899e
								
							
						
					
					
						commit
						ddd4aa424b
					
				| @ -43,13 +43,17 @@ struct inet_peer { | ||||
| 	 */ | ||||
| 	union { | ||||
| 		struct { | ||||
| 			atomic_t	rid;		/* Frag reception counter */ | ||||
| 			atomic_t	ip_id_count;	/* IP ID for the next packet */ | ||||
| 			__u32		tcp_ts; | ||||
| 			__u32		tcp_ts_stamp; | ||||
| 			u32		metrics[RTAX_MAX]; | ||||
| 			u32		rate_tokens;	/* rate limiting for ICMP */ | ||||
| 			unsigned long	rate_last; | ||||
| 			atomic_t			rid;		/* Frag reception counter */ | ||||
| 			atomic_t			ip_id_count;	/* IP ID for the next packet */ | ||||
| 			__u32				tcp_ts; | ||||
| 			__u32				tcp_ts_stamp; | ||||
| 			u32				metrics[RTAX_MAX]; | ||||
| 			u32				rate_tokens;	/* rate limiting for ICMP */ | ||||
| 			unsigned long			rate_last; | ||||
| 			unsigned long			pmtu_expires; | ||||
| 			u32				pmtu_orig; | ||||
| 			u32				pmtu_learned; | ||||
| 			struct inetpeer_addr_base	redirect_learned; | ||||
| 		}; | ||||
| 		struct rcu_head         rcu; | ||||
| 	}; | ||||
|  | ||||
| @ -515,6 +515,8 @@ struct inet_peer *inet_getpeer(struct inetpeer_addr *daddr, int create) | ||||
| 		p->metrics[RTAX_LOCK-1] = INETPEER_METRICS_NEW; | ||||
| 		p->rate_tokens = 0; | ||||
| 		p->rate_last = 0; | ||||
| 		p->pmtu_expires = 0; | ||||
| 		memset(&p->redirect_learned, 0, sizeof(p->redirect_learned)); | ||||
| 		INIT_LIST_HEAD(&p->unused); | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user