Đặt tên cho thiết bị mạng

Một phần của tài liệu đề tài phần mềm bảo mật mạng dùng giao thức ip quyển 4a các phần mềm bảo mật gói ip trên hệ điều hành linux (Trang 65 - 66)

4. Thiết bị mạng

4.2 Đặt tên cho thiết bị mạng

Tất cả các thiết bị mạng trên Linux có một tên duy nhất mà không liên quan đến tên hệ thống file. Các thiết bị mạng bình th−ờng khơng có một file trên hệ thống để biểu diễn nó, mặc dù ta có thể tạo một thiết bị mà gắn với các trình điều khiển thiết bị. Nhiều thiết bị cùng kiểu thì đ−ợc đánh số tăng dần bắt đầu từ 0, ví dụ thiết bị Ethernet đ−ợc đặt tên là “eth0”, “eth1”, “eth2”...L−ợc đồ đặt tên này có tầm quan trọng khi nó cho phép ng−ời dùng viết các ch−ơng trình hoặc cấu hình hệ thống trong thuật ngữ Ethernet card” mà không phải lo lắng về nhà sản xuất ra board và bắt buộc cấu hình lại nếu một board bị thay đổi.

Các tên sau đây đ−ợc sử dụng cho các thiết bị chung:

• ethn Bộ điều khiển Ethernet, cho cả card 10 và 100Mbit/giây. • trn Các thiết bị Token ring

• sln Thiết bị SLIP và AX.25 KISS mode

• pppn Thiết bị PPP cả dị bộ (asynchronous) và đồng bộ (synchronous) • plipn PLIP units; số phù hợp cho cổng máy in.

• tunln Tunnel bao bọc IPIP • nrn Thiết bị ảo NetROM

• isdnn Các giao diện ISDN đ−ợc quản lý bởi isdn4linux • dummyn Thiết bị Null

Một thiết bị đ−ợc tạo bằng cách ghi vào một đối t−ợng struct device và

chuyển nó tới hàm gọi register_netdev(struct device *). Lời gọi này sẽ liên kết cấu trúc thiết bị vào bảng thiết bị mạng trong nhân. Khi nhân sử dụng cấu trúc này, ta khơng thể giải phóng nó đến tận khi ta unload thiết bị đó bằng cách gọi hàm void unregister_netdev(truct device *). Hai hàm này bình

th−ờng đ−ợc thực hiện ở thời gian khởi động hoặc khi load/unload module.

Nếu ta tạo nhiều thiết bị với cùng một tên thì thiết bị sẽ hỏng. Bởi vậy, nếu trình điều khiển thiết bị của ta là một module có thể nạp (loadable) thì ta nên gọi hàm

struct device *dev_get(const char *name) để đảm bảo rằng tên đó

ch−a đ−ợc sử dụng. Nếu tên thiết bị mà ta tạo đã đ−ợc sử dụng rồi thì ta nên lấy tên khác nếu khơng trình điều khiển mới của ta sẽ lỗi. Khi ta phát hiện ra một xung đột, thì ta khơng nên sử dụng hàm unregisster_netdev() để loại bỏ thiết bị mà sử dụng tên đó.

Mã điển hình để đăng ký một thiết bị nh− sau:

int register_my_device(void) { int i=0; for(i=0;i<100;i++) { sprintf(mydevice.name,"mydev%d",i); if(dev_get(mydevice.name)==NULL) { if(register_netdev(&mydevice)!=0) return -EIO; return 0; } }

printk("100 mydevs loaded. Unable to load more.\n"); return -ENFILE;

}

Một phần của tài liệu đề tài phần mềm bảo mật mạng dùng giao thức ip quyển 4a các phần mềm bảo mật gói ip trên hệ điều hành linux (Trang 65 - 66)