コード例 #1
0
ファイル: parser.c プロジェクト: ayourtch/ndpmon-dot1q
/* If the tag ignor_autoconf if set, disable this feature by
 * setting the variables 
 * /proc/sys/net/ipv6/conf/all/autoconf
 * /proc/sys/net/ipv6/conf/all/accept_ra
 * /proc/sys/net/ipv6/conf/all/accept_ra_defrtr
 * /proc/sys/net/ipv6/conf/all/accept_ra_pinfo
 * /proc/sys/net/ipv6/conf/all/accept_redirects
 * to 0 to avoid the monitoring host to be attacked
 */
void autoconf()
{
	char *request ="/config_ndpmon/ignor_autoconf/text()";
	char  *flag;

	xmlXPathObjectPtr xmlobject = xmlXPathEval ((xmlChar*)request, xpctxt);
	
	if( xmlobject != NULL)
	{	
	    flag = (char *)xmlobject->nodesetval->nodeTab[0]->content;
	    ignor_autoconf = atoi(flag);

        /* Not working for BSD */
#ifdef _LINUX_
		/** note: it may be a good option to save values, and restore
		 * them when exiting
		 */
		write_proc("/proc/sys/net/ipv6/conf/all/autoconf",flag);
		write_proc("/proc/sys/net/ipv6/conf/all/accept_ra",flag);
		write_proc("/proc/sys/net/ipv6/conf/all/accept_ra_defrtr",flag);
		write_proc("/proc/sys/net/ipv6/conf/all/accept_ra_pinfo",flag);
		write_proc("/proc/sys/net/ipv6/conf/all/accept_redirects",flag);
	}
#endif
	xmlXPathFreeObject (xmlobject);
	return;
}
コード例 #2
0
ファイル: pstree.c プロジェクト: dima74/akos
int main()
{
	numberProcess = getNumberProcess();
	procs = malloc(numberProcess * sizeof(struct proc));
	for (int i = 0; i < numberProcess; ++i)
		procs[i].exists = 0;
	
	DIR *dir = opendir("/proc");
	struct dirent *entry;
	while ((entry = readdir(dir)) != NULL)
		if (entry->d_name[0] != '.' && isNumber(entry->d_name))
		{
			char full_path[256] = "/proc/";
			strcat(full_path, entry->d_name);
				add(full_path);
		}
	closedir(dir);
	
	printf("Process withhout parent:\n");
	for (int i = 0; i < numberProcess; ++i)
		if (procs[i].exists && procs[i].ppid == 0)
			printf("%d %s\n", i, procs[i].name);
	printf("------------------------\n\n");
	
	write_proc(0, 0);
	free(procs);
	return 0;
}
コード例 #3
0
void write(port *out, pointer object)
{
        if (object == NULL) {
                printf("()");
                return;
        }
        switch (type(object)) {
        case T_STRING:
                write_string(out, object);
                break;
        case T_NUMBER:
                write_number(out, object);
                break;
        case T_SYMBOL:
                write_symbol(out, object);
                break;
        case T_PAIR:
                write_pair(out, object);
                break;
        case T_BUILT_IN_REGULAR_PROC:
        case T_BUILT_IN_SPECIAL_PROC:
        case T_EXTEND_PROC:
                write_proc(out, object);
                break;
        case T_MACRO:
                write_macro(out, object);
                break;
        default:
                wirte_unknown(out, object);
                break;
        }
}
コード例 #4
0
ファイル: reader_writer_test.c プロジェクト: jgneuf/cs213
void* drive_test (void* arg_v) {
  struct drive_test_arg* dta = (struct drive_test_arg*) arg_v;
  int                    i;
  for (i=0; i<dta->count; i++) {
    if (dta->write)
      write_proc();
    else
      read_proc();
  }
}
コード例 #5
0
ファイル: pstree.c プロジェクト: dima74/akos
void write_proc(int pid, int spaces)
{
	for (int i = 0; i < spaces; ++i)
		printf(" ");
	printf("%d %s\n", pid, procs[pid].name);
	// n^2
	for (int i = 0; i < numberProcess; ++i)
		if (procs[i].exists && procs[i].ppid == pid)
			write_proc(procs[i].pid, spaces + 2);
}
コード例 #6
0
ファイル: main.c プロジェクト: Cmarone/xlook
G_MODULE_EXPORT void on_save_menu_item_activate(
	GtkObject *object,
	gpointer user_data)
{
	GtkWidget *dialog;
	char previous_filename[100];
	
	*previous_filename= '\0';

	dialog = gtk_file_chooser_dialog_new ("Save Xlook File",
		GTK_WINDOW(ui_globals.main_window),
		GTK_FILE_CHOOSER_ACTION_SAVE,
		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
		GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
		NULL);
	gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);

	if (strlen(previous_filename)==0)
	{
//		gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), default_folder_for_saving);
		gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "Untitled document");
	}
	else
		gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), previous_filename);

	if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
	{
		char *filename;
		filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));

		// perform the save.
		write_proc(filename);

		g_free (filename);
	}
	gtk_widget_destroy (dialog);
}
コード例 #7
0
static int echocli_setup(char *oname, char *ename, int *dev)
{
        char *args[5];
        char proc_path[50];
        int rc;

        pthread_mutex_lock(&m_config);

        args[0] = cmdname;

        /* OSC */
        /* attach "osc" oscname oscuuid */
        args[1] = "osc";
        args[2] = args[3] = oname;
        rc = jt_lcfg_attach(4, args);
        if (rc) {
                fprintf(stderr, "%s: can't attach osc '%s' (%d)\n",
                        cmdname, oname, rc);
                /* Assume we want e.g. an old one cleaned anyhow. */
                goto clean;
        }
        /* setup ostname "OSS_UUID" */
        args[1] = target;
        args[2] = "OSS_UUID";
        rc = jt_lcfg_setup(3, args);
        if (rc) {
                fprintf(stderr, "%s: can't setup osc '%s' (%d)\n",
                        cmdname, oname, rc);
                goto clean;
        }

        /* Large grants cause ENOSPC to be reported, even though
           there's space left.  We can reduce the grant size by
           minimizing these */
        sprintf(proc_path, "/proc/fs/lustre/osc/%s/max_dirty_mb", oname);
        rc = write_proc(proc_path, "1");
        sprintf(proc_path, "/proc/fs/lustre/osc/%s/max_rpcs_in_flight", oname);
        rc = write_proc(proc_path, "1");

        /* ECHO CLI */
        /* attach "echo_client" echoname echouuid */
        args[1] = "echo_client";
        args[2] = args[3] = ename;
        rc = jt_lcfg_attach(4, args);
        if (rc) {
                fprintf(stderr, "%s: can't attach '%s' (%d)\n",
                        cmdname, ename, rc);
                if (rc == ENODEV)
                        fprintf(stderr, "%s: is the obdecho module loaded?\n",
                                cmdname);
                goto clean;
        }
        /* setup oscname */
        args[1] = oname;
        rc = jt_lcfg_setup(2, args);
        if (rc) {
                fprintf(stderr, "%s: can't setup '%s' (%d)\n",
                        cmdname, ename, rc);
                goto clean;
        }

        args[1] = ename;
        rc = jt_obd_device(2, args);
        if (rc) {
                fprintf(stderr, "%s: can't set device '%s' (%d)\n",
                        cmdname, ename, rc);
                goto clean;
        }

        if (!rc)
                *dev = jt_obd_get_device();
        pthread_mutex_unlock(&m_config);
        return rc;

clean:
        pthread_mutex_unlock(&m_config);
        cleanup(ename, 1);
        cleanup(oname, 1);
        return rc;
}
コード例 #8
0
ファイル: kernel_netlink.c プロジェクト: applsdev/babeld
int
kernel_setup(int setup)
{
    int rc;

    if(setup) {
        if(export_table < 0)
            export_table = RT_TABLE_MAIN;

        if(import_table < 0)
            import_table = RT_TABLE_MAIN;

        dgram_socket = socket(PF_INET, SOCK_DGRAM, 0);
        if(dgram_socket < 0)
            return -1;

        rc = netlink_socket(&nl_command, 0);
        if(rc < 0) {
            perror("netlink_socket(0)");
            return -1;
        }
        nl_setup = 1;

        old_forwarding = read_proc("/proc/sys/net/ipv6/conf/all/forwarding");
        if(old_forwarding < 0) {
            perror("Couldn't read forwarding knob.");
            return -1;
        }

        rc = write_proc("/proc/sys/net/ipv6/conf/all/forwarding", 1);
        if(rc < 0) {
            perror("Couldn't write forwarding knob.");
            return -1;
        }

        old_ipv4_forwarding =
            read_proc("/proc/sys/net/ipv4/conf/all/forwarding");
        if(old_ipv4_forwarding < 0) {
            perror("Couldn't read IPv4 forwarding knob.");
            return -1;
        }

        rc = write_proc("/proc/sys/net/ipv4/conf/all/forwarding", 1);
        if(rc < 0) {
            perror("Couldn't write IPv4 forwarding knob.");
            return -1;
        }


        old_accept_redirects =
            read_proc("/proc/sys/net/ipv6/conf/all/accept_redirects");
        if(old_accept_redirects < 0) {
            perror("Couldn't read accept_redirects knob.");
            return -1;
        }

        rc = write_proc("/proc/sys/net/ipv6/conf/all/accept_redirects", 0);
        if(rc < 0) {
            perror("Couldn't write accept_redirects knob.");
            return -1;
        }

        old_rp_filter =
            read_proc("/proc/sys/net/ipv4/conf/all/rp_filter");
        if(old_rp_filter < 0) {
            perror("Couldn't read rp_filter knob.");
            return -1;
        }

        rc = write_proc("/proc/sys/net/ipv4/conf/all/rp_filter", 0);
        if(rc < 0) {
            perror("Couldn't write rp_filter knob.");
            return -1;
        }

        return 1;
    } else {
        close(dgram_socket);
        dgram_socket = -1;

        if(old_forwarding >= 0) {
            rc = write_proc("/proc/sys/net/ipv6/conf/all/forwarding",
                            old_forwarding);
            if(rc < 0) {
                perror("Couldn't write forwarding knob.\n");
                return -1;
            }
        }

        if(old_ipv4_forwarding >= 0) {
            rc = write_proc("/proc/sys/net/ipv4/conf/all/forwarding",
                            old_ipv4_forwarding);
            if(rc < 0) {
                perror("Couldn't write IPv4 forwarding knob.\n");
                return -1;
            }
        }

        if(old_accept_redirects >= 0) {
            rc = write_proc("/proc/sys/net/ipv6/conf/all/accept_redirects",
                            old_accept_redirects);
            if(rc < 0) {
                perror("Couldn't write accept_redirects knob.\n");
                return -1;
            }
        }

        if(old_rp_filter >= 0) {
            rc = write_proc("/proc/sys/net/ipv4/conf/all/rp_filter",
                            old_rp_filter);
            if(rc < 0) {
                perror("Couldn't write rp_filter knob.\n");
                return -1;
            }
        }

        close(nl_command.sock);
        nl_command.sock = -1;

        nl_setup = 0;
        return 1;

    }
}