Package: iodine
Version: 0.4.1-3
Severity: wishlist
Tags: patch

Hi!

I would like to use iodine into a vserver. In a vserver, iodine has no
right to create an interface, to assign an IP and to set MTU of the
interface. Therefore, I set all this outside of the vserver and I
would like to provide a way such that iodine does not try to setup the
interface.

I attach a patch that provides such a functionality.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.24-1-amd64 (SMP w/1 CPU core)
Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/bash

Versions of packages iodine depends on:
ii  adduser                3.107             add and remove users and groups
ii  debconf [debconf-2.0]  1.5.21            Debian configuration management sy
ii  libc6                  2.7-10            GNU C Library: Shared libraries
ii  makedev                2.3.1-87          creates device files in /dev
ii  udev                   0.114-2           /dev/ and hotplug management daemo
ii  zlib1g                 1:1.2.3.3.dfsg-12 compression library - runtime

iodine recommends no packages.

-- debconf information:
  iodine/daemon_options:
  iodine/start_daemon: false
--- iodine-0.4.1/src/iodined.c~ 2007-11-30 23:11:30.000000000 +0100
+++ iodine-0.4.1/src/iodined.c  2008-04-24 17:22:11.000000000 +0200
@@ -446,6 +446,7 @@
        int choice;
        int port;
        int mtu;
+       int skipipconfig;
 
        username = NULL;
        newroot = NULL;
@@ -454,17 +455,21 @@
        mtu = 1024;
        listen_ip = INADDR_ANY;
        port = 53;
+       skipipconfig = 0;
 
        b32 = get_base32_encoder();
 
        memset(password, 0, sizeof(password));
        srand(time(NULL));
        
-       while ((choice = getopt(argc, argv, "vfhu:t:d:m:l:p:P:")) != -1) {
+       while ((choice = getopt(argc, argv, "vsfhu:t:d:m:l:p:P:")) != -1) {
                switch(choice) {
                case 'v':
                        version();
                        break;
+               case 's':
+                       skipipconfig = 1;
+                       break;
                case 'f':
                        foreground = 1;
                        break;
@@ -545,8 +550,9 @@
 
        if ((tun_fd = open_tun(device)) == -1)
                goto cleanup0;
-       if (tun_setip(argv[0]) != 0 || tun_setmtu(mtu) != 0)
-               goto cleanup1;
+       if (!skipipconfig)
+               if (tun_setip(argv[0]) != 0 || tun_setmtu(mtu) != 0)
+                       goto cleanup1;
        if ((dnsd_fd = open_dns(port, listen_ip)) == -1) 
                goto cleanup2;
 
--- iodine-0.4.1/man/iodine.8~  2007-11-30 23:11:30.000000000 +0100
+++ iodine-0.4.1/man/iodine.8   2008-04-24 17:25:37.000000000 +0200
@@ -25,7 +25,7 @@
 
 .B iodined [-h]
 
-.B iodined [-f] [-u
+.B iodined [-f] [-s] [-u
 .I user
 .B ] [-P
 .I password
@@ -62,6 +62,10 @@
 .B -f
 Keep running in foreground.
 .TP
+.B -s
+Don't try to configure IP address or MTU. This should only be used if
+you have already configured the device that will be used.
+.TP
 .B -u user
 Drop privileges and run as user 'user' after setting up tunnel.
 .TP

Reply via email to