linux - 从 Linux 应用程序发送 MPLS 标记的数据包
问题描述
我编写了一些 VPN 软件,现在需要能够使用 MPLS 标签标记去隧道的流量。
我查看了 Mausezahn 的来源(它可以发送 MPLS 数据包),它似乎使用各种辅助函数构建了整个以太网帧,然后使用libnet_write
.
暂存/send_eth.c:
...
tmpls = libnet_build_mpls(tx.mpls_label,
tx.mpls_exp,
tx.mpls_bos,
tx.mpls_ttl,
NULL,
0,
l,
0);
...
t = libnet_build_ethernet (tx.eth_dst,
tx.eth_src,
tx.eth_type,
tx.eth_payload,
tx.eth_payload_s,
L,
t);
if (t == -1)
{
fprintf(stderr, " mz/create_eth_frame: Can't build Ethernet header: %s\n",
libnet_geterror(l));
exit(EXIT_FAILURE);
}
if (verbose) (void) print_frame_details();
libnet_write(L);
...
我的代码目前使用 IP 级隧道接口(例如 tun0)将数据包传送到内核。
如果我想使用 MPLS,我是否需要开始使用 Tap 接口?
还是有其他方法,比如 tun0 的 fd 上的 ioctls?
还是我需要使用libnet_write
?
解决方案
推荐阅读
- c# - 有没有办法使用 C# 从 .URL 文件中获取 URL?我曾想过进入房产以获得它,但我愿意接受任何建议
- java - “无法解决符号'springframework'”
- c++ - 提升具有相关值的 bimap
- sql - 将自定义值列表作为附加列添加到 SQL 查询的末尾
- php - Doctrine2:实体的有界上下文和 SINGLE_TABLE 继承映射。有点困惑我是否以正确的方式做事
- gmail - RShiny 将 Gmail 附件拖到 Shiny Upload 控件并自动上传附件
- windows - 错误:TLS 配置无效 - 确保您的 DOCKER_TLS_VERIFY 和 DOCKER_CERT_PATH 设置正确。在窗户上
- c++ - 使用带有 WH_CALLWNDPROCRET 或 WH_CALLWNDPROC 的 SetwindowsHookEX 打开超链接时如何在 Outlook 中获取超链接的 URL
- azure - 从 Azure 成本中心获取数据
- css - 为什么“Live Sass Compiler”扩展正在编译所有 sass 文件?