Remove the temporary consistency check and add a case statement to only
allow ipip mixed dests.
Signed-off-by: Alex Gartrell <agartrell@fb.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
 
        EnterFunction(2);
 
-       /* Temporary for consistency */
-       if (udest->af != svc->af)
-               return -EINVAL;
-
 #ifdef CONFIG_IP_VS_IPV6
        if (udest->af == AF_INET6) {
                atype = ipv6_addr_type(&udest->addr.in6);
                 */
                if (udest.af == 0)
                        udest.af = svc->af;
+
+               if (udest.af != svc->af) {
+                       /* The synchronization protocol is incompatible
+                        * with mixed family services
+                        */
+                       if (net_ipvs(net)->sync_state) {
+                               ret = -EINVAL;
+                               goto out;
+                       }
+
+                       /* Which connection types do we support? */
+                       switch (udest.conn_flags) {
+                       case IP_VS_CONN_F_TUNNEL:
+                               /* We are able to forward this */
+                               break;
+                       default:
+                               ret = -EINVAL;
+                               goto out;
+                       }
+               }
        }
 
        switch (cmd) {