Các hàm tùy chọn (optional functionality)

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 73 - 74)

Mỗi thiết bị cung cấp thêm các hàm và các tiện ích tùy chọn cho các tầng giao thức. Không cài đặt các hàm này sẽ gây ra sự giảm sút các dịch vụ có sẵn thông qua giao diện, nh−ng điều này sẽ không ngăn chặn hoạt động của mạng. Các hàm này đ−ợc chia thành hai loại: configuration và activation/shutdown

6.1 Activation và Shutdown (Kích hoạt và tắt)

Khi một thiết bị đ−ợc kích hoạt (cờ IFF_UP đ−ợc thiết lập), thì hàm

dev->open() đ−ợc gọi. Gọi hàm này cho phép thiết bị thực hiện bất kỳ hành động nào (nh− cho phép giao diện, điều này cần tr−ớc khi giao diện đó đ−ợc sử dụng). Hàm này trả về một lỗi gây ra cho thiết bị ở trạng thái down và khiến yêu cầu kích hoạt của ng−ời dùng phát sinh lỗi với một lỗi đ−ợc trả lại bởi hàm

Hàm dev->open cũng có thể đ−ợc sử dụng với bất kỳ thiết bị nào mà đ−ợc nạp (load) d−ới dạng module. Cần ngăn chặn thiết bị khỏi bị unloaded trong khi thiết bị đó mở; bởi vậy, macro MOD_INC_USE_COUNT phải đ−ợc sử dụng bên trong hàm open này.

Hàm dev->close() đ−ợc gọi khi thiết bị đ−ợc cấu hình để sẵn sàng down và nên gỡ bỏ phần cứng theo một cách nh− thế để giảm thiểu công việc load của máy. Ngoài ra hàm này cũng đ−ợc sử dụng để cho phép một module thiết bị đ−ợc gỡ bỏ (unload) sau khi thiết bị đó down. Phần còn lại của nhân cũng đ−ợc cấu trúc theo cách nh− thế khi một thiết bị đ−ợc đóng, tất cả mọi tham chiếu đến thiết bị này bởi con trỏ thì bị xóa bỏ, nhằm mục đích đảm bảo rằng thiết bị đ−ợc gỡ bỏ một cách an toàn từ một hệ thống đang chạy. Hàm close không đ−ợc cho phép sinh lỗi.

6.2 Configuration và Statistics

Một tập các hàm cung cấp khả năng để truy vấn (hỏi) và để thiết lập các tham số vận hành. Một trong những hàm này đó là thủ tục get_stats, thủ tục này đ−ợc gọi sẽ trả về một cấu trúc enet_statistics - khối các thông số cho giao diện đó. Khối này cho phép các ch−ơng trình ng−ời dùng nh− ifconfig thấy đ−ợc việc nạp giao diện và các thông số của frame (frame truyền, frame nhận, frame lỗi...). Không cung cấp khối này có nghĩa là các thông số thống kê sẽ không có sẵn. Hàm dev->set_mac_address() đ−ợc gọi bất cứ khi nào một tiến trình siêu ng−ời dùng (superuser process) phát hành một ioctl của kiểu SIOCSIFHWADDR để thay đổi địa chỉ vật lý của thiết bị. Đối với nhiều thiết bị, hàm này không có ý nghĩa và đối với một số thiết khác thì hàm này không đ−ợc hỗ trợ. Trong các tr−ờng hợp này, con trỏ hàm này đ−ợc thiết lập là NULL. Một vài thiết bị có thể chỉ thực hiện thay đổi địa chỉ vật lý khi giao diện bị đóng (down). Đối với những thiết bị này, hàm kiểm tra cờ IFF_UP, và nếu nó đ−ợc thiết lập thì hàm trả về - EBUSY.

Hàm dev->set_config() đ−ợc gọi bởi hàm SIOCSIFMAP khi một ng−ời dùng thực thi một lệnh nh− ifconfig eth0 irq 11. Sau đó nó chuyển cấu trúc

ifmap chứa I/O và các tham số giao diện khác. Hàm này thì không hữu ích cho đa số các giao diện .

Cuối cùng, dev->do_ioctl() đ−ợc gọi mỗi khi một ioctl trong khoảng từ SIOCDEVIPRIVATE tới SIODEVPIRIVATE+15 đ−ợc sử dụng trên giao diện. Tất cả các cuộc gọi ioctl này lấy một cấu trúc ifreq, cấu trúc này đ−ợc sao chép vào trong nhân tr−ớc khi trình xử lý đ−ợc gọi.

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 73 - 74)