int ipforward_on (void) { FILE *fp; if ( zserv_privs.change(ZPRIVS_RAISE) ) zlog_err ("Can't raise privileges, %s", safe_strerror (errno) ); fp = fopen (proc_ipv4_forwarding, "w"); if (fp == NULL) { if ( zserv_privs.change(ZPRIVS_LOWER) ) zlog_err ("Can't lower privileges, %s", safe_strerror (errno)); return -1; } fprintf (fp, "1\n"); fclose (fp); if ( zserv_privs.change(ZPRIVS_LOWER) ) zlog_err ("Can't lower privileges, %s", safe_strerror (errno)); return ipforward (); }
int ipforward_off () { FILE *fp; fp = fopen (proc_ipv4_forwarding, "w"); if (fp == NULL) return -1; fprintf (fp, "0\n"); fclose (fp); return ipforward (); }