기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요.


특정 네트워크가 무선인지 유선인지 알고 싶습니다.


제 상황은 이더넷드라이버랑 무선드라이버가 2개가 있습니다.


현재 이더넷드라이버는 eth0으로 잡히고 무선드라이버는 eth1로 잡힙니다.


그런데 드라이버를 올리는 순서를 달리하여서 무선드라이버를 먼저올리고 이더넷드라이버를 나중에 올리면 


무선이 eth0이 되고 유선 이더넷이 eth1이 됩니다.


이런 상황에서 eth0는 무조건 이더넷이라고 단정하기도 애매한 상황같아서 특정 인터페이스가 유선인지 무선인지 알았으면 합니다.


이러저러한 방법을 찾아보다가 udev를 이용 할수 있을것 같아서 각각의 네트워크 인터페이스에 대해서 udev정보를 읽어보았습니다.


root@test:~# udevadm info -a -p /sys/class/net/eth0


Udevadm info starts with the device specified by the devpath and then

walks up the chain of parent devices. It prints for every device

found, all possible attributes in the udev rules key format.

A rule to match, can be composed by the attributes of the device

and the attributes from one single parent device.


looking at device '/devices/virtual/net/eth0':

KERNEL=="eth0"

SUBSYSTEM=="net"

DRIVER==""

ATTR{mtu}=="1500"

ATTR{type}=="1"

ATTR{netdev_group}=="0"

ATTR{flags}=="0x1003"

ATTR{dormant}=="0"

ATTR{addr_assign_type}=="0"

ATTR{dev_id}=="0x0"

ATTR{iflink}=="2"

ATTR{addr_len}=="6"

ATTR{address}=="00:15:1d:00:00:00"

ATTR{operstate}=="up"

ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"

ATTR{tx_queue_len}=="1000"

ATTR{ifalias}==""

ATTR{ifindex}=="2"

ATTR{link_mode}=="0"

ATTR{carrier}=="1"


root@test:~#



 root@test:~# udevadm info -a -p /sys/class/net/eth1


Udevadm info starts with the device specified by the devpath and then

walks up the chain of parent devices. It prints for every device

found, all possible attributes in the udev rules key format.

A rule to match, can be composed by the attributes of the device

and the attributes from one single parent device.


looking at device '/devices/platform/exynos4-sdhci.3/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/eth1':

KERNEL=="eth1"

SUBSYSTEM=="net"

DRIVER==""

ATTR{mtu}=="1500"

ATTR{type}=="1"

ATTR{netdev_group}=="0"

ATTR{flags}=="0x1002"

ATTR{addr_assign_type}=="0"

ATTR{dev_id}=="0x0"

ATTR{iflink}=="3"

ATTR{addr_len}=="6"

ATTR{address}=="c4:23:7a:00:6e:93"

ATTR{operstate}=="down"

ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"

ATTR{tx_queue_len}=="1000"

ATTR{ifalias}==""

ATTR{ifindex}=="3"

ATTR{link_mode}=="0"


looking at parent device '/devices/platform/exynos4-sdhci.3/mmc_host/mmc1/mmc1:0001/mmc1:0001:1':

KERNELS=="mmc1:0001:1"

SUBSYSTEMS=="sdio"

DRIVERS=="unifi"

ATTRS{class}=="0x00"

ATTRS{device}=="0x0007"

ATTRS{vendor}=="0x032a"


looking at parent device '/devices/platform/exynos4-sdhci.3/mmc_host/mmc1/mmc1:0001':

KERNELS=="mmc1:0001"

SUBSYSTEMS=="mmc"

DRIVERS==""

ATTRS{type}=="SDIO"


looking at parent device '/devices/platform/exynos4-sdhci.3/mmc_host/mmc1':

KERNELS=="mmc1"

SUBSYSTEMS=="mmc_host"

DRIVERS==""


looking at parent device '/devices/platform/exynos4-sdhci.3':

KERNELS=="exynos4-sdhci.3"

SUBSYSTEMS=="platform"

DRIVERS=="s3c-sdhci"


looking at parent device '/devices/platform':

KERNELS=="platform"

SUBSYSTEMS==""

DRIVERS==""


root@test:~#


정보를 보고 나름 생각하기로는 ATTR{flags}가 0x1002이면 무선이고 0x1003이면 유선이지 않을까 라고 생각도 해보았습니다. 그런데 이러한 flags에 대한 정보를 찾기가 힘들더군요. 이방법도 아닌거 같고...


특정 네트워크가 무선인지 유선인지 알 수 있는 방법이 있을까요 ? 


유형목

2014.11.12 23:31:36
*.200.239.210

SUSBSYSTEM 항목을 보면 알수 있네요.


무선랜은 SUBSYSTEMS=="sdio"

그냥 이더넷은 SUBSYSTEMS=="net"


으로 나오네요.

xoduddk123

2014.11.13 01:49:55
*.216.145.10

eth1의 경우에도 아랫부분은 사용하는 인터페이스가 SDIO인터페이스를  사용하는 무선랜이기 때문에 SDIO로 나오는것 같은데 맨위에는 동일하게 SUBSYSTEM 항목이 동일 하게 net이어서 구분하기 힘든 것 같습니다.

파일럿

2014.11.13 02:59:51
*.214.41.74

WiFi driver에서 network 장치 이름을 wlan0등으로 바꾸는게 쉽지 않을까요?

xoduddk123

2014.11.13 04:39:46
*.216.145.10

저도 다른 mlan0이나 wlan0이나 그런것들도 무선네트워크인것은 알고 있습니다. 

그런데 확실히 구분되게 현재 시스템이 있는 네트워크장치들은 하나씩 보면서 이건 무선 이건 유선 이렇게 알수있는 방법이 있지않을까해서요...   분명히 어디가에 그런정보가 있을거같기도 하고요 flags같기는 한데 .... ㅠㅠ 



배석헌

2014.11.15 04:40:34
*.236.10.19

iw (http://git.sipsolutions.net/iw.git/)

나 wireless tools 같은 툴을 참고하보세요.

$ iwconfig

eth0      no wireless extensions.


lo        no wireless extensions.


$ iw eth0

nl80211 not found

$ iw eth1



문철민

2014.12.02 00:38:53
*.37.242.22

cat /proc/net/wireless


하시면 무선 장비가 나옵니다

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
6148 S3C6410 IROM booting [6] 전병환 2009-02-19 2771
6147 오드로이드 SDCARD의 Root FS를 안보이게 하는 방법은... [2] 김영일 2010-08-25 2768
6146 [질문] 이솝보드에 삼성의 DNW(USB/Sireal 다운로더)사용하려면..? [6] 박재흥 2006-08-16 2759
6145 삼성 2440 I/O Speed [1] 전철웅 2007-11-17 2759
6144 [완료] 터치 증상이 이상합니다. [6] 강경완 2007-05-11 2751
6143 가속도 센서 관련하여 문의글 올립니다. [2] 리오살다 2013-04-02 2750
6142 [완료]dm9000a [10] 이진우 2007-09-14 2741
6141 프로젝트 계획 조언부탁드립니다. [5] 시그인트 2014-02-19 2734
6140 Opencore 와 Openmax 그리고 mfc 와의 관계. [11] 임기영 2009-09-04 2732
6139 [완료]SDL 기본 화면 뛰우기 [3] 윤치호 2007-11-15 2731
6138 [완료] LX800 PDS에 있는 WINCE BSP는 무엇인지요. [6] 오주열 2007-05-26 2731
6137 안드로이더 에 touch cal 값을 어떻게 얻었나요? [3] 이성호 2009-04-06 2717
6136 ubuntu 10.04 오드로이드 타겟 adb 연결 문제 [1] rapel 2010-06-11 2711
6135 yaffs2 포팅(lost+found증상) file 푸르름 2011-12-23 2709
6134 [완료]pci slot확장시 bios수정필요한지? [2] 조성철 2007-06-05 2709
6133 aesop lx800 구입문의 [1] 조정근 2008-09-18 2704
6132 [re] [질문] 동영상 재생 & LCD 잔상 [5] 강덕하 2007-05-22 2703
6131 안드로이드-S 구글맵관련 앱 설치가 안됩니다. [3] 바람돌이0 2010-07-21 2692
6130 LX800 주변기기 추천 부탁드립니다.[완료] [7] 조준동 2007-05-10 2692
6129 만든 앱이 수퍼 유저 권한 획득하려면 에 대한 질문입니다. [7] 프로그램개발자 2014-01-08 2689

사용자 로그인