如何使用socket_t(套接字引用)来获取Mac OS的网络内核扩展中的ip和端口

时间:2018-02-21 09:06:29

标签: kernel-extension

我正在编写Socket过滤器,其中大多数套接字过滤回调函数(startDragDistance())都有输入参数struct sflt_filter,如下所示:

socket_t so

需要从 errno_t ( *sf_bind_func)( void *cookie, socket_t so, const struct sockaddr *to); 获取端口和IP。 有人知道如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

获得 OSx和iOS内核编程预订的解决方案。 函数sock_getsockname()完成工作。查找以下代码段:

    unsigned char addrStr[256];
    struct sockaddr_in addrLcl;
    sock_getsockname(so, (struct sockaddr *)&addrLcl, sizeof(addrLcl));
    inet_ntop(AF_INET, &addrLcl.sin_addr, (char *)addrStr, sizeof(addrStr));
    printf("SFWebSecBind() : <%s> Hex:<%X>", addrStr, ntohs(addrLcl.sin_port));