Linux postawienie interfejsu

0

Dzień dobry

Piszę program pod Linuxa. Jak z poziomu programu linuxowego postawić interfejs etho, polecenie ifconfig eth0 up. Jak to zrobić w C++ ?

0

Próbowałeś za pomocą funkcji system?

2

https://github.com/atomic-penguin/linux/blob/master/Documentation/networking/ifenslave.c
http://stackoverflow.com/questions/5858655/linux-programmatically-up-down-an-interface-kernel
To są dobre sposoby. Jeżeliby nie zadziałało:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define NO_IFCONFIG 5
#define FORK_ERROR -1

int ifconfig_up(char *ifname) {
	int statval;
	pid_t pid = fork();
	if(pid == 0) {
		char *args[] = {"ifconfig",ifname,"up", NULL};
		execvp(args[0],args);
		exit(NO_IFCONFIG);
	}
	else if(pid > 0) {
		waitpid(pid,&statval,0);
		return WEXITSTATUS(statval);
	}
	return FORK_ERROR;
}

int main(void) {
	int excode = ifconfig_up("eth0");
	switch(excode) {
	case EXIT_SUCCESS:
		printf("Wlaczono pomyslnie\n");
		break;
	case NO_IFCONFIG:
		fprintf(stderr,"nie masz ifconfiga\n");
		break;
	default:
		fprintf(stderr,"inny blad %d\n",excode);
		break;
	}
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1