소스 위치
https://github.com/martinezjavier/ldd3
리눅스 바로 다운
#wget https://github.com/martinezjavier/ldd3/archive/master.zip
#master.zip
zip이 없는 경우
#apt-get install unzip
#unzip master.zip
특정위치에 풀기
#unzip master.zip -d ./ldd3
#make
.. 오류
추가
vi /etc/networks
snullnet0 192.168.0.0 snullnet1 192.168.1.0
192.168.0.1 local0 192.168.0.2 remote0 192.168.1.2 local1 192.168.1.1 remote1
You may need to add the netmask 255.255.255.0 parameter if the address range chosen is not a class C range.
#morgana% ping -c 2 remote0
커널 버전이 3.10 보다 크면 오류가 있는것 같습니다.
네트워크 드바이스 드라이버 등록
alloc_netdev
network device 를 등록할때 커널의 alloc_netdev 함수를 호출하게 됩니다.
이때 장비의 이름을 eth%d 와 같은 형식으로 넘겨주게 됩니다.
eth%d가 eth0, eth1등으로 reslove 되는 것은 언제일까요?
드라이버가 로딩되면 드라이버의 등록 함수(attach)에서 dev_alloc_name 함수를 이용해서 이름을 완성하게 됩니다.
따라서 디바이스 드라이버가 등록 되기전에 dev->name 을 사용하면
eth0, eth1이 아니라 eth%d 로 proc 등의 디렉토리를 만들게 되어 에러의 원인이 됩니다.
아래 오류는 해결
snull/snull.c:726:18: error: ‘alloc_netdev’ undeclared (first use in this function)
snull_devs[0] = alloc_netdev(sizeof(struct snull_priv), "sn%d", NET_NAME_UNKNOWN,
아래로 수정하면 됩니다.
NET_NAME_UNKNOWN 제거
dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup); to dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_UNKNOWN, VNetNetIfSetup);
'개발' 카테고리의 다른 글
Tomcat rotatelogs 만들기 (0) | 2018.07.12 |
---|---|
linux Apache 설치 및 환경 설정 cgi 연동 (0) | 2018.07.08 |
java.security.SecureRandom (0) | 2017.12.15 |
gdb 사용을 위한 core 파일 남기기 (0) | 2016.07.04 |
안드로이드 ADT 설치 (0) | 2016.07.02 |