diff --git a/modules/routing_generator.py b/modules/routing_generator.py
index 5aa8d4eb63efc0d82b894d4b4526dfd50f57c5bb..58f528ebf8fc50e7df676bf1b8a66880750950b3 100644
--- a/modules/routing_generator.py
+++ b/modules/routing_generator.py
@@ -1,7 +1,7 @@
 """Contains generation of vars for routing of different types of devices."""
 
 from conf.border_router import BORDER_ROUTER_NAME, BORDER_ROUTER_NETWORK_NAME,\
-                               BORDER_ROUTER_IP
+                               BORDER_ROUTER_IP, BORDER_ROUTER_NETWORK_IP
 
 
 def _find_router_in_network(network_name, input_definitions):
@@ -63,7 +63,26 @@ def _find_router_ip_in_br_network(other_network, input_definitions):
             return router_mapping["ip"]
 
 
-def _add_interface_route(route, target_interface_ip, target_routes_list):
+def _find_netmask(ip, input_definitions):
+    """Find netmask to an ip."""
+    network_name = None
+    for mapping in [*input_definitions["net_mappings"],\
+                    *input_definitions["router_mappings"]]:
+        if mapping["ip"] == ip:
+            network_name = mapping["network"]
+            break
+
+    if not network_name:
+        raise AttributeError("ip " + ip + " was not found.")
+
+    for network in input_definitions["networks"]:
+        if network["name"] == network_name:
+            net_ip, netmask = network["cidr"].split("/")
+            return netmask
+
+
+def _add_interface_route(route, target_interface_ip, interface_mask,
+                         target_routes_list):
     """Add route to list of routes with the given interface."""
     for interface in target_routes_list:
         if interface["interface_ip"] == target_interface_ip:
@@ -72,12 +91,13 @@ def _add_interface_route(route, target_interface_ip, target_routes_list):
 
     new_interface = dict()
     new_interface["interface_ip"] = target_interface_ip
+    new_interface["interface_netmask"] = interface_mask
     new_interface["interface_default_gateway"] = ""
     new_interface["interface_routes"] = [route]
     target_routes_list.append(new_interface)
 
 
-def _add_default_route(default_gateway, target_interface_ip,
+def _add_default_route(default_gateway, target_interface_ip, interface_mask,
                        target_routes_list):
     """Add default route to the given interface."""
     for interface in target_routes_list:
@@ -87,6 +107,7 @@ def _add_default_route(default_gateway, target_interface_ip,
 
     new_interface = dict()
     new_interface["interface_ip"] = target_interface_ip
+    new_interface["interface_netmask"] = interface_mask
     new_interface["interface_default_gateway"] = default_gateway
     new_interface["interface_routes"] = []
     target_routes_list.append(new_interface)
@@ -96,8 +117,10 @@ def _configure_auto_on_ansible_interface(target_routes_list,
                                          is_border_router=False):
     """Call interfaces role on the main interface to set auto."""
     new_interface = dict()
-    new_interface["interface_ip"] = "{{ ansible_default_ipv4.address  |" \
+    new_interface["interface_ip"] = "{{ ansible_default_ipv4.address  | " \
                                     "default(ansible_all_ipv4_addresses[0]) }}"
+    new_interface["interface_netmask"] = "{{ ansible_default_ipv4.netmask  | " \
+                                         "default('24') }}"
     if is_border_router:
         new_interface["interface_default_gateway"] =\
             "{{ ansible_default_ipv4.gateway }}"
@@ -121,7 +144,8 @@ def _create_host_routing(target_host_name, input_definitions, flags):
 
     if flags["border_router"]:
         gateway = _find_router_in_network(mapping["network"], input_definitions)
-        _add_default_route(gateway, mapping["ip"], routes)
+        if_netmask = _find_netmask(mapping["ip"], input_definitions)
+        _add_default_route(gateway, mapping["ip"], if_netmask, routes)
     else:
         for network in input_definitions["networks"]:
             if network["name"] == mapping["network"]:
@@ -133,7 +157,9 @@ def _create_host_routing(target_host_name, input_definitions, flags):
             net_ip, mask = network["cidr"].split('/')
             routing_to_other_hosts["network"] = net_ip
             routing_to_other_hosts["mask"] = mask
-            _add_interface_route(routing_to_other_hosts, mapping["ip"], routes)
+            if_mask = _find_netmask(mapping["ip"], input_definitions)
+            _add_interface_route(routing_to_other_hosts, mapping["ip"], if_mask,
+                                 routes)
 
     return routes
 
@@ -148,7 +174,8 @@ def _create_router_routing(router_name, input_definitions, flags):
         interface_ip = _find_iface_ip_in_network(router_name,
                                                  BORDER_ROUTER_NETWORK_NAME,
                                                  input_definitions)
-        _add_default_route(BORDER_ROUTER_IP, interface_ip, routes)
+        net_ip, mask = BORDER_ROUTER_NETWORK_IP.split("/")
+        _add_default_route(BORDER_ROUTER_IP, interface_ip, mask, routes)
 
     return routes
 
@@ -168,7 +195,9 @@ def _create_border_router_routing(input_definitions):
         gateway = _find_router_ip_in_br_network(network["name"],
                                                 input_definitions)
         routing_to_hosts["gateway"] = gateway
-        _add_interface_route(routing_to_hosts, BORDER_ROUTER_IP, routes)
+        net_ip, if_mask = BORDER_ROUTER_NETWORK_IP.split("/")
+        _add_interface_route(routing_to_hosts, BORDER_ROUTER_IP, if_mask,
+                             routes)
 
     return routes
 
diff --git a/templates/br b/templates/br
index 5b26c4482607d9f3e6224060ace3d6d2e8e09dfb..c78f42c3b933c89aa7342c5775e8c8b3f45667e5 100644
--- a/templates/br
+++ b/templates/br
@@ -10,6 +10,7 @@
     name: interface
   vars:
     interface_ip: "{{ interface.interface_ip }}"
+    interface_netmask: "{{ interface.interface_netmask }}"
     interface_default_gateway: "{{ interface.interface_default_gateway | default('') }}"
     interface_routes: "{{ interface.interface_routes | default([]) }}"
   loop: "{{ routes }}"
diff --git a/templates/interface/tasks/interface.yml b/templates/interface/tasks/interface.yml
index f51f0b29e9339a5c88885fa2715a3bbc914c9c1f..5f78cca50fef9c49df709de26ec1b26379235549 100644
--- a/templates/interface/tasks/interface.yml
+++ b/templates/interface/tasks/interface.yml
@@ -9,7 +9,7 @@
           auto {{ interface_device }}
           iface {{ interface_device }} inet static
               address {{ interface_ip }}
-              netmask 24
+              netmask {{ interface_netmask }}
               mtu {{ interface_mtu }}
               {% if interface_default_gateway -%}
               gateway {{ interface_default_gateway }}
diff --git a/templates/separate_devices b/templates/separate_devices
index 940dace19275dc66624f373ecc06b0746fac9942..5e398eb9f746d2f24c588bf6848e5d9a2a73aad1 100644
--- a/templates/separate_devices
+++ b/templates/separate_devices
@@ -10,6 +10,7 @@
     name: interface
   vars:
     interface_ip: "{{ interface.interface_ip }}"
+    interface_netmask: "{{ interface.interface_netmask }}"
     interface_default_gateway: "{{ interface.interface_default_gateway | default('') }}"
     interface_routes: "{{ interface.interface_routes | default([])}}"
   loop: "{{ routes }}"