Я использую операцию безопасности socket_recvmsg в модуле безопасности Linux.
int (*socket_recvmsg) (struct socket *sock,struct msghdr *msg, int size, int flags)
Предполагается, что Msg->msg_name указывает на структуру sockaddr_in, которая содержит sin_family, исходный порт и исходный IP-адрес. msg->msg_namelen указывает размер данных, на которые указывает msg->msg_name. Однако msg->msg->namelen в моей функции socket_recvmsg всегда равно 112, что намного больше, чем sizeof(struct sockaddr_in). Поэтому я предполагаю, что msg->msg_name должно указывать на какую-то другую структуру данных, а не на struct sockaddr_in. Кто-нибудь знает, на какой тип данных указывает msg->msg_name в socket_recvmsg?
Кроме того, msg->msg_name в моей функции sendmsg всегда равно sizeof(struct sockaddr_in), и я могу получить порт и IP-адрес из msg->msg_name в функции sendmsg.