You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
MAX_SIZE - sizeof (struct GNUNET_MessageHeader));
if (-1 == buftun_size)
{
- fprintf (stderr, "read-error: %s\n", strerror (errno));
+ fprintf (stderr,
+ "read-error: %s\n",
+ strerror (errno));
shutdown (fd_tun, SHUT_RD);
shutdown (1, SHUT_WR);
read_open = 0;
#if !DEBUG
if (errno != EPIPE)
#endif
- fprintf (stderr, "write-error to stdout: %s\n", strerror (errno));
+ fprintf (stderr,
+ "write-error to stdout: %s\n",
+ strerror (errno));
shutdown (fd_tun, SHUT_RD);
shutdown (1, SHUT_WR);
read_open = 0;
* @param argc must be 6
* @param argv 0: binary name ("gnunet-helper-exit")
* 1: tunnel interface name ("gnunet-exit")
- * 2: IPv4 "physical" interface name ("eth0"), or "-" to not do IPv4 NAT
+ * 2: "physical" interface name ("eth0"), or "-" to not setup NAT
+ * and routing
* 3: IPv6 address ("::1"), or "-" to skip IPv6
* 4: IPv6 netmask length in bits ("64") [ignored if #4 is "-"]
* 5: IPv4 address ("1.2.3.4"), or "-" to skip IPv4
fprintf (stderr, "Fatal: disabling both IPv4 and IPv6 makes no sense.\n");
return 1;
}
- if (0 == access ("/sbin/iptables", X_OK))
- sbin_iptables = "/sbin/iptables";
- else if (0 == access ("/usr/sbin/iptables", X_OK))
- sbin_iptables = "/usr/sbin/iptables";
- else
- {
- fprintf (stderr,
- "Fatal: executable iptables not found in approved directories: %s\n",
- strerror (errno));
- return 1;
- }
- if (0 == access ("/sbin/sysctl", X_OK))
- sbin_sysctl = "/sbin/sysctl";
- else if (0 == access ("/usr/sbin/sysctl", X_OK))
- sbin_sysctl = "/usr/sbin/sysctl";
- else
+ if (0 != strcmp (argv[2], "-"))
{
- fprintf (stderr,
- "Fatal: executable sysctl not found in approved directories: %s\n",
- strerror (errno));
- return 1;
+ if (0 == access ("/sbin/iptables", X_OK))
+ sbin_iptables = "/sbin/iptables";
+ else if (0 == access ("/usr/sbin/iptables", X_OK))
+ sbin_iptables = "/usr/sbin/iptables";
+ else
+ {
+ fprintf (stderr,
+ "Fatal: executable iptables not found in approved directories: %s\n",
+ strerror (errno));
+ return 1;
+ }
+ if (0 == access ("/sbin/sysctl", X_OK))
+ sbin_sysctl = "/sbin/sysctl";
+ else if (0 == access ("/usr/sbin/sysctl", X_OK))
+ sbin_sysctl = "/usr/sbin/sysctl";
+ else
+ {
+ fprintf (stderr,
+ "Fatal: executable sysctl not found in approved directories: %s\n",
+ strerror (errno));
+ return 1;
+ }
}
strncpy (dev, argv[1], IFNAMSIZ);
}
set_address6 (dev, address, prefix_len);
}
+ if (0 != strcmp (argv[2], "-"))
{
char *const sysctl_args[] =
{
set_address4 (dev, address, mask);
}
+ if (0 != strcmp (argv[2], "-"))
{
- char *const sysctl_args[] =
- {
- "sysctl", "-w", "net.ipv4.ip_forward=1", NULL
- };
- if (0 != fork_and_exec (sbin_sysctl,
- sysctl_args))
{
- fprintf (stderr,
- "Failed to enable IPv4 forwarding. Will continue anyway.\n");
+ char *const sysctl_args[] =
+ {
+ "sysctl", "-w", "net.ipv4.ip_forward=1", NULL
+ };
+ if (0 != fork_and_exec (sbin_sysctl,
+ sysctl_args))
+ {
+ fprintf (stderr,
+ "Failed to enable IPv4 forwarding. Will continue anyway.\n");
+ }
}
- }
- if (0 != strcmp (argv[2], "-"))
- {
- char *const iptables_args[] =
- {
- "iptables", "-t", "nat", "-A", "POSTROUTING", "-o", argv[2], "-j", "MASQUERADE", NULL
- };
- if (0 != fork_and_exec (sbin_iptables,
- iptables_args))
{
- fprintf (stderr,
- "Failed to enable IPv4 masquerading (NAT). Will continue anyway.\n");
+ char *const iptables_args[] =
+ {
+ "iptables", "-t", "nat", "-A", "POSTROUTING", "-o", argv[2], "-j", "MASQUERADE", NULL
+ };
+ if (0 != fork_and_exec (sbin_iptables,
+ iptables_args))
+ {
+ fprintf (stderr,
+ "Failed to enable IPv4 masquerading (NAT). Will continue anyway.\n");
+ }
}
}
}