기본 콘텐츠로 건너뛰기

ldd3 Source

소스 위치
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

#vi /etc/hosts:
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.

#ifconfig sn0 local0 #ifconfig sn1 local1

#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);

댓글

이 블로그의 인기 게시물

[Java] Http File Download 이어받기

Http 서버로부터 다운로드 받는 파일을 이어받기 위해서는 Http Header에 아래 두가지 정보를 추가해 주면 된다. URLConnection conn = url.openConnection(); conn.setRequestProperty("Accept-Ranges", "bytes"); conn.setRequestProperty("Range", "bytes=" + mOffset + "-"); 그러면 서버에서는 해당 Offset으로부터 File을 다운로드 시켜준다. 클라이언트가 요청헤더에 Range 필드를 포함 시켜서 보내면, 서버는 그 정보를 가지고 어디서 부터 파일을 보낼지 판단을 합니다. 하지만 클라이언트가(브라우저) Range 필드를 포함 시켜야 할지를 판단하는 기준은 최초 다운로드 요청시 서버의 응답헤더에 따라 다음 요청헤더에 Range 헤더를 생성할지 않할지 판단하게 됩니다. 그걸 당락짓는 응답 헤더 필드는 다음과 같습니다. Accept-Ranges , ETag, Last-Modified 반드시 위 필드를 응답 헤더에 같이 보내줘야 클라이언트는 다음 요청시 Range헤더를 포함시켜 보내게 됩니다. 참고로 말씀 드리면 위 필드를 포함 시켜서 보내더라도 value는 반드시 " " 로 묶어서 보내야 합니다. 안그러면 브라우저는 죽어도 Range 필드를 생성시키지 않습니다. HTTP 1.1 스펙은 따옴표를 강제적으로 해줘라 이런 내용 없습니다. 자바기준 40byte의 파일이라치면 클리이언트 요청을 두번으로 나누었다치면 이케 connection.setRequestProperty("Range", "bytes=0-20"); connection.setRequestProperty("Range", "bytes=20-40"); 단 co...

java 특정 디렉토리에 있는 파일 목록을 읽어내기, 정렬해서 가져오기

폴더 리스트 가져오기 String path="C:\"; File dirFile=new File(path); File []fileList=dirFile.listFiles(); for(File tempFile : fileList) {   if(tempFile.isFile()) {     String tempPath=tempFile.getParent();     String tempFileName=tempFile.getName();     System.out.println("Path="+tempPath);     System.out.println("FileName="+tempFileName);     /*** Do something withd tempPath and temp FileName ^^; ***/   } } 정렬해서 가져오기 import java.io.FileFilter; import java.io.IOException; import java.util.Arrays; import java.util.Date; import org.apache.commons.io.comparator.LastModifiedFileComparator; import org.apache.commons.io.filefilter.FileFileFilter; public class LastModifiedFileComparatorTest { public static void main(String[] args) throws IOException { File directory = new File("."); // get just files, not directories File[] files = directory.listFiles((FileFilter) FileFileFilter.FILE); System.out.println("Defaul...