]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/net/ip_vs.h
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux.git] / include / net / ip_vs.h
index 2ac40135b5765ffc373b6322dc79a22d96db275b..3759167f91f5643ea5a192eb7e82ce3a34e9e91b 100644 (file)
@@ -603,6 +603,7 @@ struct ip_vs_dest_user_kern {
 
        u16                     tun_type;       /* tunnel type */
        __be16                  tun_port;       /* tunnel port */
+       u16                     tun_flags;      /* tunnel flags */
 };
 
 
@@ -665,6 +666,7 @@ struct ip_vs_dest {
        atomic_t                last_weight;    /* server latest weight */
        __u16                   tun_type;       /* tunnel type */
        __be16                  tun_port;       /* tunnel port */
+       __u16                   tun_flags;      /* tunnel flags */
 
        refcount_t              refcnt;         /* reference counter */
        struct ip_vs_stats      stats;          /* statistics */
@@ -808,11 +810,12 @@ struct ipvs_master_sync_state {
        struct ip_vs_sync_buff  *sync_buff;
        unsigned long           sync_queue_len;
        unsigned int            sync_queue_delay;
-       struct task_struct      *master_thread;
        struct delayed_work     master_wakeup_work;
        struct netns_ipvs       *ipvs;
 };
 
+struct ip_vs_sync_thread_data;
+
 /* How much time to keep dests in trash */
 #define IP_VS_DEST_TRASH_PERIOD                (120 * HZ)
 
@@ -943,7 +946,8 @@ struct netns_ipvs {
        spinlock_t              sync_lock;
        struct ipvs_master_sync_state *ms;
        spinlock_t              sync_buff_lock;
-       struct task_struct      **backup_threads;
+       struct ip_vs_sync_thread_data *master_tinfo;
+       struct ip_vs_sync_thread_data *backup_tinfo;
        int                     threads_mask;
        volatile int            sync_state;
        struct mutex            sync_mutex;
@@ -1404,6 +1408,9 @@ bool ip_vs_has_real_service(struct netns_ipvs *ipvs, int af, __u16 protocol,
 struct ip_vs_dest *
 ip_vs_find_real_service(struct netns_ipvs *ipvs, int af, __u16 protocol,
                        const union nf_inet_addr *daddr, __be16 dport);
+struct ip_vs_dest *ip_vs_find_tunnel(struct netns_ipvs *ipvs, int af,
+                                    const union nf_inet_addr *daddr,
+                                    __be16 tun_port);
 
 int ip_vs_use_count_inc(void);
 void ip_vs_use_count_dec(void);
@@ -1497,6 +1504,9 @@ static inline int ip_vs_todrop(struct netns_ipvs *ipvs)
 static inline int ip_vs_todrop(struct netns_ipvs *ipvs) { return 0; }
 #endif
 
+#define IP_VS_DFWD_METHOD(dest) (atomic_read(&(dest)->conn_flags) & \
+                                IP_VS_CONN_F_FWD_MASK)
+
 /* ip_vs_fwd_tag returns the forwarding tag of the connection */
 #define IP_VS_FWD_METHOD(cp)  (cp->flags & IP_VS_CONN_F_FWD_MASK)