C中的gPTP入口时间戳

问题描述

我一直在尝试实现 gPTP 事件消息(SYNC 和/或 FOLLOW_UP)消息的入口时间戳。基本上,有两个时间敏感网络(TSN)。即。设备端和网络端,在 5GS 中实现。因此 gPTP 数据包从 NWTT-->DSTT 流出。算法应该是所有事件消息都由 NWTT 加上时间戳并发送到 DSTT。然后据此可以计算出链路延迟。

这是我的代码,在创建套接字并接收缓冲区中的数据包并将它们复制到 PTP 结构标头后,我有点卡住了。任何帮助或指导表示赞赏。

硬件时间戳需要添加到 gPTP 事件消息中。

int main() {
    int sock;
    sock = socket(AF_PACKET,SOCK_RAW,htons(ETH_P_1588));
    if (sock == -1) {
        perror("socket");
        exit(EXIT_FAILURE);
    }

    unsigned char *buffer = (unsigned char *) malloc(65537);
    memset(buffer,65537);
    struct sockaddr sockaddr;
    int sockaddr_len = sizeof(sockaddr);

    int buffer_len;
    buffer_len = recvfrom(sock,buffer,65537,&sockaddr,(socklen_t *) &sockaddr_len);
    if (buffer_len == -1) {
        perror("recvfrom");
        exit(EXIT_FAILURE);
    }

    struct timespec ts;
    clock_gettime(CLOCK_REALTIME,(struct timespec *) &ts);

    struct ptpv2_header *ptpv2Header = (struct ptpv2_header *) buffer;

    // Todo
    return EXIT_SUCCESS;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)