2013-08-02 4 views
0

우리는 대개 두 개 이상의 NIC 카드를 통합하기 위해 본딩 인터페이스를 구성하기 위해 인터페이스 또는 sysfs 또는 linux (Ubuntu)의 ifenslave를 사용합니다. 그런 다음 채권을 만들고 삭제하고 인터페이스를 추가 및 제거 할 수있는 netlink 라이브러리가 있습니다. 그러나 현재 제공되지 않는 것은 본드의 다른 속성을 동적으로 변경하는 것입니다.C에서 리눅스의 인터페이스 본딩 (aggregation)

예를 들어 MTU 또는 본드의 하드웨어 주소 또는 본딩 모드 자체를 변경하려고합니다. 이 정보는 일반적으로

/sys/class/net/bondx/... 

과 bonding_masters에있는 우리는 재부팅없이 즉, 동적으로 장백의 균형의 결합 모드를 변경

# ifconfig bond0 down 
echo 6 > /sys/class/net/bond0/bonding/mode 

같은 것을 할 필요 또는 다시 시작 인터페이스를 변경하여 네트워킹 파일. 마찬가지로 우리는 연결 모듈을

함께 제공되는 설명서에 나와 다른 매개 변수를 변경할 수 있습니다하지만 대화 형 C 프로그램을 통해 변경한다면, 내가 어떻게 sysfs를와 인터페이스합니까? 필자는 C.의 기본 파일 처리를 제외한 파일 시스템과의 직접적인 인터페이스 경험이 없습니다. 개발자는 libsysfs에 대한 no-no이며 libudev가 유용 할 수도 있지만 너무 확신하지는 않습니다. sysctl()이/proc 파일 시스템을위한 것처럼, sysfs 파일 시스템을위한 인터페이스는 무엇입니까?

이 문제를 해결하는 다른 프로그래밍 방식이 있습니까? 어쩌면 ioctl?

+1

내가 대답은 여기에 생각 : [C의 리눅스 sysfs를 노드에 쓰기] (http://stackoverflow.com/questions/10458166/write-to-linux-sysfs-node-in-c) – Mali

답변

1

에 쉘에서 echo을 쓰면 프로그램에서 write()을 사용하여 쓸 수 있습니다.