我正尝试按如下方式收听 OSPFv2 Hello 消息:
ens192, err := net.InterfaceByName("ens192")
if err != nil {
return err
}
c, err := net.ListenPacket("ip4:89", "0.0.0.0") // ipv4 proto 89, all local interfaces
if err != nil {
return err
}
defer c.Close()
p := ipv4.NewPacketConn(c)
if err != nil {
return err
}
allSPFRouters := net.ParseIP("224.0.0.5")
if err := p.JoinGroup(ens192, &net.IPAddr{IP: allSPFRouters}); err != nil {
return err
}
if err := p.SetControlMessage(ipv4.FlagDst|ipv4.FlagSrc|ipv4.FlagInterface, true); err != nil {
return err
}
b := make([]byte, 8192)
for {
n, cm, src, err := p.ReadFrom(b)
_ = n
if err != nil {
return err
}
if cm.Dst.IsMulticast() {
if cm.Dst.Equal(allSPFRouters) {
hdr := &ospfHeader{}
hdr.Decode(b)
fmt.Printf("%s\n", hdr)
} else {
// ignore/discard
fmt.Printf("Received packet from: %v to %v\n", src, cm.Dst)
continue
}
} else {
fmt.Printf("Not mcast\n")
}
}
但我只能看到本地生成的 OSPF 消息(即来自本地计算机上的 OSPF 进程)。我看不到任何来自远程机器的 OSPF 数据包(不过我可以使用 tcpdump 看到它们)。 任何想法上面的代码有什么问题?为什么我只能看到本地 Hello 而看不到远程...?
最佳答案
问题解决了。代码没问题——“问题”是 red hat 和 firewalld...
关于去和多播(特别是 ospf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438973/
如果您要选择测试框架,您会如何在cucumber和shoulda之间做出决定?这两个框架的主要区别是什么? 最佳答案 正如大家所指出的,Cucumber和Shoulda的目标截然不同。您可以将Cucumber视为“10,000英尺的View”测试框架-您定义广泛的功能或特定的用户交互,并确保一切正常。Shoulda用于单元测试-您选择一个特定模型并彻底测试该单独部分的所有挑剔的小功能。通常,您会希望结合使用这些类型的框架。例如,您的大部分广泛的高级测试都可以用Cucumber编写,但是当您的系统中有一段特别复杂或不透明的代码时,您可
Heroku可能会出于各种原因向您的应用程序发送SIGTERM,因此我创建了一个处理程序来处理一些清理工作,以防发生这种情况。一些谷歌搜索没有给出任何关于如何在RSpec中测试它的答案或示例。这是基本代码:Signal.trap('TERM')docleanupenddefcleanupputs"doingsomecleanupstuff"...exitend当程序收到SIGTERM时,测试调用此清理方法的最佳方法是什么? 最佳答案 使用Process.kill'TERM',0将信号发送到RSpec并测试调用处理程序。确实,如果信号
文章目录实验要求实验思路IP地址规划路由实验配置R1上配置R2上配置R3上配置R4上配置R5上配置R6上配置R7上配置R8上配置R9上配置R10上配置R11上配置R12上配置实验测试R10pingR4的环回R10pingR12的环回R10pingR1实验要求R4为ISP,其只能配置IP地址;R4与其他所有直连设备间均使用公有IP;R3-R5/6/7为MGRE环境,R3为中心站点;整个OSPF环境IP基于172.16.0.0/16划分;所有设备均可访问R4的环回;减少LSA的更新量,加快收敛,保障更新安全;全网可达实验思路IP地址规划公网IP随便配置,这里我R3-R4的网段为34.1.1.0/2
如果您在以root身份登录时从命令行运行rubybundler,您会收到以下警告:Don'trunBundlerasroot.Bundlercanaskforsudoifitisneeded,andinstallingyourbundleasrootwillbreakthisapplicationforallnon-rootusersonthismachine.以root身份运行bundler对它安装的gem有什么确切的区别?是否与它为每个gem安装的实际文件的权限有关?Ruby会尝试以非root用户身份访问gem文件吗(如果是,Ruby会使用哪个用户/组,我将如何找到)?如果应用
思科与华为设备OSPF配置命令对比[Huawei]ospf1//启动OSPF进程,进入OSPF视图Cisco(config)#routerospf110[Huawei]ospf1router-id10.1.1.1//启动OSPF进程,进入OSPF视图,手动输入router-idCisco(config-router)#router-id1.1.1.1[Huawei-ospf-1]area0//创建并进入OSPF区域视图(骨干区域)[Huawei-ospf-1-area-0.0.0.0]network10.0.1.00.0.0.255//配置区域所包含的网段[Huawei-GigabitEthe
我听说ruby1.9.2是ruby2.0,但ruby1.9.3计划在不久的将来发布,它将包含一些性能增强。那么他们对2.0有什么计划?它会与ruby1.9.x有很大不同吗? 最佳答案 特征(mix)和Module#prepend已经在YARV中实现,并且很可能最终会出现在Ruby2.0中。>mix方法与当前的include方法不同,它获取模块的列表,并同时混合所有模块,确保它们没有冲突的方法。它还为您提供了一种轻松解决冲突的方法,例如您要混合的两个模块定义相同的方法。所以,基本上,虽然include方法允许您将模块视
我正在寻找一个轻量级的RubyWeb框架并且遇到了Sinatra和Ramaze.两者都显得非常轻盈、简洁和简单。但我对两者的了解都不够多,无法说出主要区别是什么。也许对其中一项或两项都有经验的人可以发表评论? 最佳答案 其他轻量级Ruby框架我喜欢_why'sCamping(现在维护bythecommunity)必须是它们中最轻的(有关最新信息[>=v1.9],请参阅Campinglinks上的Campingwiki,EleanorMcHughe的“GoingofftheRails”或[v1.5]JeremyMcAnally的Goi
作为IntelliJIdeaUltimate版本的拥有者,并且安装了IntelliJRuby插件,我不得不想知道这种体验与使用RubyMineIDE有何不同。我猜他们共享很多代码和功能。主要区别是什么?如果我要进入Ruby世界,我应该购买RubyMineIDE还是继续使用IntelliJ+Ruby插件? 最佳答案 Ruby插件和RubyMine是从相同的代码库构建的,没错。JRuby代码的Java/Ruby集成仅在IntelliJIDEA的Ruby插件中可用。但是该插件不支持RubyMotion。同时检查这个答案:IfIhaveID
使用下面的代码块,它可以正常打开chrome浏览器,但不会使用F11全屏显示浏览器。我曾经使用C#和selenium,并且在chrome和不同的浏览器上使用这种方法效果很好。它找到元素“body”但随后不发送按键。我在这里做错了什么我应该需要一些其他图书馆吗?webdriverjs的文档很可怜,示例也很少,我正在认真考虑将它转储到其他可能是python的东西上。varwebdriver=require('selenium-webdriver');vardriver=newwebdriver.Builder().withCapabilities(webdriver.Capabilitie
素材来源:华为路由器配置指南一边学习一边整理试验笔记,并与大家分享,侵权即删,谢谢支持!附上汇总贴:玩转华为ENSP模拟器系列|合集_COCOgsta的博客-CSDN博客_华为模拟器实验目标举例介绍OSPF的NSSA区域的配置过程。组网需求某些网络由于引入大量外部路由导致路由表的规模过大,网络资源浪费,CPU占用率较高。为了解决这个问题,可以将位于自治系统边缘的非骨干区域配置成NSSA区域,减少传递的路由信息数量。配置区域为NSSA区域后,不传播来自OSPF网络其它区域的外部路由,但引入自治系统外部的路由,这样可以避免大量外部路由对路由器带宽和存储资源的消耗。所有的路由器都运行OSPF,整个自