[IP_TUNNEL]: Don't limit the number of tunnels with generic name explicitly.

Use the added dev_alloc_name() call to create tunnel device name,
rather than iterate in a hand-made loop with an artificial limit.

Thanks Patrick for noticing this.

[ The way this works is, when the device is actually registered,
the generic code noticed the '%' in the name and invokes
dev_alloc_name() to fully resolve the name. -DaveM ]

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Pavel Emelyanov and committed by David S. Miller 34cc7ba6 55b01e86

+10 -43
-2
include/net/ip6_tunnel.h
··· 14 14 /* capable of receiving packets */ 15 15 #define IP6_TNL_F_CAP_RCV 0x20000 16 16 17 - #define IP6_TNL_MAX 128 18 - 19 17 /* IPv6 tunnel */ 20 18 21 19 struct ip6_tnl {
+2 -10
net/ipv4/ip_gre.c
··· 259 259 260 260 if (parms->name[0]) 261 261 strlcpy(name, parms->name, IFNAMSIZ); 262 - else { 263 - int i; 264 - for (i=1; i<100; i++) { 265 - sprintf(name, "gre%d", i); 266 - if (__dev_get_by_name(&init_net, name) == NULL) 267 - break; 268 - } 269 - if (i==100) 270 - goto failed; 271 - } 262 + else 263 + sprintf(name, "gre%%d"); 272 264 273 265 dev = alloc_netdev(sizeof(*t), name, ipgre_tunnel_setup); 274 266 if (!dev)
+2 -10
net/ipv4/ipip.c
··· 221 221 222 222 if (parms->name[0]) 223 223 strlcpy(name, parms->name, IFNAMSIZ); 224 - else { 225 - int i; 226 - for (i=1; i<100; i++) { 227 - sprintf(name, "tunl%d", i); 228 - if (__dev_get_by_name(&init_net, name) == NULL) 229 - break; 230 - } 231 - if (i==100) 232 - goto failed; 233 - } 224 + else 225 + sprintf(name, "tunl%%d"); 234 226 235 227 dev = alloc_netdev(sizeof(*t), name, ipip_tunnel_setup); 236 228 if (dev == NULL)
+4 -11
net/ipv6/ip6_tunnel.c
··· 229 229 char name[IFNAMSIZ]; 230 230 int err; 231 231 232 - if (p->name[0]) { 232 + if (p->name[0]) 233 233 strlcpy(name, p->name, IFNAMSIZ); 234 - } else { 235 - int i; 236 - for (i = 1; i < IP6_TNL_MAX; i++) { 237 - sprintf(name, "ip6tnl%d", i); 238 - if (__dev_get_by_name(&init_net, name) == NULL) 239 - break; 240 - } 241 - if (i == IP6_TNL_MAX) 242 - goto failed; 243 - } 234 + else 235 + sprintf(name, "ip6tnl%%d"); 236 + 244 237 dev = alloc_netdev(sizeof (*t), name, ip6_tnl_dev_setup); 245 238 if (dev == NULL) 246 239 goto failed;
+2 -10
net/ipv6/sit.c
··· 164 164 165 165 if (parms->name[0]) 166 166 strlcpy(name, parms->name, IFNAMSIZ); 167 - else { 168 - int i; 169 - for (i=1; i<100; i++) { 170 - sprintf(name, "sit%d", i); 171 - if (__dev_get_by_name(&init_net, name) == NULL) 172 - break; 173 - } 174 - if (i==100) 175 - goto failed; 176 - } 167 + else 168 + sprintf(name, "sit%%d"); 177 169 178 170 dev = alloc_netdev(sizeof(*t), name, ipip6_tunnel_setup); 179 171 if (dev == NULL)