Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd
[firefly-linux-kernel-4.4.55.git] / include / net / dst.h
index e01a826f2a9c8cef455f217eab07a3ec2669280e..46ed958e0c6ef2ffc7142a3739c985382f9a97cf 100644 (file)
@@ -108,9 +108,11 @@ struct dst_entry {
 u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old);
 extern const u32 dst_default_metrics[];
 
-#define DST_METRICS_READ_ONLY  0x1UL
+#define DST_METRICS_READ_ONLY          0x1UL
+#define DST_METRICS_FORCE_OVERWRITE    0x2UL
+#define DST_METRICS_FLAGS              0x3UL
 #define __DST_METRICS_PTR(Y)   \
-       ((u32 *)((Y) & ~DST_METRICS_READ_ONLY))
+       ((u32 *)((Y) & ~DST_METRICS_FLAGS))
 #define DST_METRICS_PTR(X)     __DST_METRICS_PTR((X)->_metrics)
 
 static inline bool dst_metrics_read_only(const struct dst_entry *dst)
@@ -118,6 +120,11 @@ static inline bool dst_metrics_read_only(const struct dst_entry *dst)
        return dst->_metrics & DST_METRICS_READ_ONLY;
 }
 
+static inline void dst_metrics_set_force_overwrite(struct dst_entry *dst)
+{
+       dst->_metrics |= DST_METRICS_FORCE_OVERWRITE;
+}
+
 void __dst_destroy_metrics_generic(struct dst_entry *dst, unsigned long old);
 
 static inline void dst_destroy_metrics_generic(struct dst_entry *dst)