我正在尝试在RPL中实现安全机制。为此,我需要记录数据包的来源。例如,如果一个数据包是从A-> B-> C-> D发送的,我想在C处找到该数据包是通过B来的,对于D也是类似的。
我在+ registry=hortonworks
+ name=sandbox-hdp
+ version=3.0.1
+ proxyName=sandbox-proxy
+ proxyVersion=1.0
+ flavor=hdp
+ echo hdp
+ mkdir -p sandbox/proxy/conf.d
+ mkdir -p sandbox/proxy/conf.stream.d
+ docker pull hortonworks/sandbox-hdp:3.0.1
3.0.1: Pulling from hortonworks/sandbox-hdp
70799bbf2226: Pull complete
40963917cdad: Pull complete
3fe9adbb8d7e: Pull complete
ee3ec4e8cb3d: Pull complete
7ea5917732c0: Pull complete
2d951411620c: Pull complete
f4c5e354e7fd: Pull complete
22ffa6ef360f: Pull complete
2060aa0f3751: Pull complete
ca01ba34744d: Pull complete
83326dded077: Pull complete
eb3d71b90b73: Pull complete
bdd1cab41c81: Pull complete
500cc770c4bd: Pull complete
0cb1decd5474: Pull complete
b9591f4b6855: Pull complete
f28e56086127: Pull complete
e7de4e7d0bca: Pull complete
ec77967d2166: Pull complete
4fdcae170114: Pull complete
6347f5df8ffc: Pull complete
6a6ecc232709: Pull complete
ea845898ff50: Pull complete
02135573b1bf: Pull complete
cb0176867cd8: Pull complete
3c08321268fd: Pull complete
82e82a97c465: Pull complete
8aaaa48ed101: Pull complete
74b321ac2ac5: Pull complete
569da02c0a66: Pull complete
af40820407ef: Pull complete
Digest: sha256:7b767af7b42030fb1dd0f672b801199241e6bef1258e3ce57361edb779d95921
Status: Downloaded newer image for hortonworks/sandbox-hdp:3.0.1
+ docker pull hortonworks/sandbox-proxy:1.0
1.0: Pulling from hortonworks/sandbox-proxy
Digest: sha256:42e4cfbcbb76af07e5d8f47a183a0d4105e65a1e7ef39fe37ab746e8b2523e9e
Status: Image is up to date for hortonworks/sandbox-proxy:1.0
+ '[' hdp == hdf ']'
+ '[' hdp == hdp ']'
+ hostname=sandbox-hdp.hortonworks.com
++ docker images
++ grep hortonworks/sandbox-hdp
++ awk '{print $2}'
+ version=3.0.1
+ docker network create cda
+ docker run --privileged --name sandbox-hdp -h sandbox- hdp.hortonworks.com --network=cda --network-alias=sandbox- hdp.hortonworks.com -d hortonworks/sandbox-hdp:3.0.1
1eb02f20456a5be1d553bb7dc67e1db1203edfcc8b54d8a0bc3c5e0850a5e079
+ echo ' Remove existing postgres run files. Please wait'
Remove existing postgres run files. Please wait
+ sleep 2
+ docker exec -t sandbox-hdp sh -c 'rm -rf /var/run/postgresql/*; systemctl restart postgresql-9.6.service;'
+ sed s/sandbox-hdp-security/sandbox-hdp/g assets/generate-proxy- deploy-script.sh
+ mv -f assets/generate-proxy-deploy-script.sh.new assets/generate- proxy-deploy-script.sh
+ chmod +x assets/generate-proxy-deploy-script.sh
+ assets/generate-proxy-deploy-script.sh
+ uname
+ grep MINGW
+ chmod +x sandbox/proxy/proxy-deploy.sh
+ sandbox/proxy/proxy-deploy.sh
docker: invalid reference format.
See 'docker run --help'.
文件中添加了一些代码,以从数据包缓冲区中提取发件人地址,但该地址始终为空。
我正在存储最后一个节点地址和接收到完整数据包的时间。这些是数据结构。
using System;
namespace MyProject {
public sealed class GuidConverter : JsonConverter<Guid> {
public GuidConverter() { }
public GuidConverter(string format) { _format = format; }
private readonly string _format = "N";
public override void WriteJson(JsonWriter writer, Guid value, JsonSerializer serializer) {
writer.WriteValue(value.ToString(_format));
}
public override Guid ReadJson(JsonReader reader, Type objectType, Guid existingValue, bool hasExistingValue, JsonSerializer serializer) {
string s = (string)reader.Value;
return new Guid(s);
}
}
}
到目前为止,我在[JsonConverter(typeof(GuidConverter))] // defaults to format of "N"
public Guid MyGuid { get; set; }
中第1108行(主分支)下方编写的主要代码是
[JsonConverter(typeof(GuidConverter), "X")]
public Guid MyGuid { get; set; }
我希望它能给我来自packetbuf的地址,但它始终为NULL。另外,我怀疑它仅在目标节点上运行,而不在中间节点上运行。
答案 0 :(得分:0)
您可以调试执行。为此,只需在uip6.c中将DEBUG_NONE设置为DEBUG_PRINT,然后解析串行日志以查找数据包采用的路径。