Курсовая работа: Реализация сети в операционной системе Linux
connectопределяет маршруты вызывая протокольно зависимые функции (tcp_v4_connect(),udp_connect()) net/socket.c
asmlinkage long sys_connect(int fd, struct sockaddr *uservaddr, int addrlen)
{
................................
err = sock->ops->connect(sock, (struct sockaddr *) address, addrlen,
sock->file->f_flags);
..........................
}
int sock_create(int family, int type, int protocol, struct socket **res)
{
.....................................
//cоздаемпротокольнозависимыйсокет!
//--------------------------------------
if ((i = net_families[family]->create(sock, protocol)) < 0)
{
sock_release(sock);
goto out;
}
.................
}
Функции
Socket
Проверяем ошибки
Выделяем память
Ложим сокет в список inode
Устанавливаем указатели на протокольно зависимые части
Сохраняем данные про тип и параметры сокета
Устанавливаем сокет в положение закрыт
Инициализируем очереди пакетов