Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/routing/eroute/__init__.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/routing/eroute/__init__.py	(revision 40088)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/routing/eroute/__init__.py	(working copy)
@@ -50,7 +50,7 @@
                            ))
     gw_ip = IPAddressField(verbose_name=_('Gateway IP'),editable=True)
     weight = Uint32Field(verbose_name=_('Weight'), scope='1..1048576', default='1', optional=True,editable=True)
-    validation = BooleanField(verbose_name=_('Validity'), optional=True, default=True, editable=True, cache_expire_time= 60, configurable=False)
+    validation = BooleanField(verbose_name=_('Validity'), optional=True, default=True, editable=False, cache_expire_time= 60, configurable=False)
     invalid_resaon = CharField(verbose_name=_('Reason of Failure'), optional=True, cache_expire_time= 60, configurable=False)
     
     stats = FieldGroup(writable=False, verbose_name=_('Eroute Statistics'), level=STATS,
@@ -176,13 +176,20 @@
             else:
                 des_port_str = str(instance.des_port['port'])
             self.cli.set_config()
-            src_ip_ipgroup = instance.src_ip.values()[0] if instance.src_ip.values()[0] else instance.src_ipgroup[0]["name"]
-            if instance.des_ip.values()[0]:
-                des_ip_ipgroup = instance.des_ip.values()[0]
-            elif instance.des_domain:
-                des_ip_ipgroup = instance.des_domain
+            if instance.select_src == 'ipgroup':
+                src_ip_ipgroup = instance.src_ipgroup[0]["name"]
             else:
+                src_ip_ipgroup = instance.src_ip.values()[0]
+                if not src_ip_ipgroup:
+                    src_ip_ipgroup = '0.0.0.0' if 'ipv4' in instance.src_ip else '::'
+            if instance.select_host == 'ipgroup':
                 des_ip_ipgroup = instance.des_ipgroup[0]['name']
+            elif instance.select_host == 'domain':
+                des_ip_ipgroup = instance.des_domain
+            else:
+                des_ip_ipgroup = instance.des_ip.values()[0]
+                if not des_ip_ipgroup:
+                    des_ip_ipgroup = '0.0.0.0' if 'ipv4' in instance.des_ip else '::'
             result = self.cli.cmd('ip eroute "%s" %s %s %s %s "%s" %s %s %s %s %s' % (instance.name, instance.priority, src_ip_ipgroup,
                             instance.src_mask_prefix.values()[0], src_port_str, des_ip_ipgroup, instance.des_mask_prefix.values()[0],
                             des_port_str, instance.protocol, instance.gw_ip.values()[0], instance.weight),
@@ -202,13 +209,20 @@
             else:
                 des_port_str = str(instance.des_port['port'])
             self.cli.set_config()
-            src_ip_ipgroup = instance.src_ip.values()[0] if instance.src_ip.values()[0] else instance.src_ipgroup[0]["name"]
-            if instance.des_ip.values()[0]:
-                des_ip_ipgroup = instance.des_ip.values()[0]
-            elif instance.des_domain:
-                des_ip_ipgroup = instance.des_domain
+            if instance.select_src == 'ipgroup':
+                src_ip_ipgroup = instance.src_ipgroup[0]["name"]
             else:
+                src_ip_ipgroup = instance.src_ip.values()[0]
+                if not src_ip_ipgroup:
+                    src_ip_ipgroup = '0.0.0.0' if 'ipv4' in instance.src_ip else '::'
+            if instance.select_host == 'ipgroup':
                 des_ip_ipgroup = instance.des_ipgroup[0]['name']
+            elif instance.select_host == 'domain':
+                des_ip_ipgroup = instance.des_domain
+            else:
+                des_ip_ipgroup = instance.des_ip.values()[0]
+                if not des_ip_ipgroup:
+                    des_ip_ipgroup = '0.0.0.0' if 'ipv4' in instance.des_ip else '::'
             result = self.cli.cmd('ip eroute "%s" %s %s %s %s "%s" %s %s %s %s %s' % (instance.name, instance.priority, src_ip_ipgroup,
                             instance.src_mask_prefix.values()[0], src_port_str, des_ip_ipgroup, instance.des_mask_prefix.values()[0],
                             des_port_str, instance.protocol, instance.gw_ip.values()[0], instance.weight),
@@ -248,7 +262,7 @@
                            ))
     gw_ip = IPAddressField(verbose_name=_('Gateway IP'),editable=True)
     weight = Uint32Field(verbose_name=_('Weight'), scope='1..1048576', default='1', optional=True,editable=True)
-    validation = BooleanField(verbose_name=_('Validity'), optional=True, default=True, editable=True, cache_expire_time= 60)
+    validation = BooleanField(verbose_name=_('Validity'), optional=True, default=True, editable=False, cache_expire_time= 60)
     ttl = Uint32Field(verbose_name=_('TTL'), optional=True, cache_expire_time= 10)
     invalid_resaon = CharField(verbose_name=_('Reason of Failure'), optional=True, cache_expire_time= 60)
 
@@ -366,7 +380,7 @@
                            ))
     gw_ip = IPAddressField(verbose_name=_('Gateway IP'), primary_key=True)
     weight = Uint32Field(verbose_name=_('Weight'))
-    validation = BooleanField(verbose_name=_('Validity'), optional=True, default=True, editable=True, cache_expire_time= 60)
+    validation = BooleanField(verbose_name=_('Validity'), optional=True, default=True, editable=False, cache_expire_time= 60)
     invalid_resaon = CharField(verbose_name=_('Reason of Failure'), optional=True, cache_expire_time= 60)
     
     class Meta:
