]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - include/net/dst.h
net: Abstract default ADVMSS behind an accessor.
[mv-sheeva.git] / include / net / dst.h
index 85dee3a57b9b464afceb8c02baf1d9e55da918ad..03a1c3d52d808c06f9349405c30f85663bcaf313 100644 (file)
@@ -104,11 +104,30 @@ struct dst_entry {
 #ifdef __KERNEL__
 
 static inline u32
-dst_metric(const struct dst_entry *dst, int metric)
+dst_metric_raw(const struct dst_entry *dst, const int metric)
 {
        return dst->_metrics[metric-1];
 }
 
+static inline u32
+dst_metric(const struct dst_entry *dst, const int metric)
+{
+       WARN_ON_ONCE(metric == RTAX_HOPLIMIT ||
+                    metric == RTAX_ADVMSS);
+       return dst_metric_raw(dst, metric);
+}
+
+static inline u32
+dst_metric_advmss(const struct dst_entry *dst)
+{
+       u32 advmss = dst_metric_raw(dst, RTAX_ADVMSS);
+
+       if (!advmss)
+               advmss = dst->ops->default_advmss(dst);
+
+       return advmss;
+}
+
 static inline void dst_metric_set(struct dst_entry *dst, int metric, u32 val)
 {
        dst->_metrics[metric-1] = val;