バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/
はじめに
ネットワークシミュレーションに向けてのlwIPの構築。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
lwIPのソースコード修正
太郎くん
まずは、lwIPをちょっと修正しないとビルドが通らないんだっけ?
フクさん
そうだね。
lwIPの疑似受信時にそういうのがあった。
太郎くん
確かここで説明してたね。
フクさん
そうそう。
太郎くん
というわけで、
その時のdiffをそのまま適用。
あるものは使わないとね。
diff U3B include/lwip/arch.h include/lwip/arch.h
--- include/lwip/arch.h Fri Nov 23 04:57:02 2018
+++ include/lwip/arch.h Tue Jan 14 21:30:50 2020
@@ -45,7 +45,7 @@
#define BIG_ENDIAN 4321
#endif
-#include "arch/cc.h"
+//#include "arch/cc.h"
/**
* @defgroup compiler_abstraction Compiler/platform abstraction
@@ -71,6 +71,7 @@
#ifdef __DOXYGEN__
#define LWIP_RAND() ((u32_t)rand())
#endif
+#define LWIP_RAND() ((u32_t)rand())
/** Platform specific diagnostic output.\n
* Note the default implementation pulls in printf, which may
@@ -122,15 +123,15 @@
#if !defined(LWIP_HAVE_INT64) && defined(UINT64_MAX)
#define LWIP_HAVE_INT64 1
#endif
-typedef uint8_t u8_t;
-typedef int8_t s8_t;
-typedef uint16_t u16_t;
-typedef int16_t s16_t;
-typedef uint32_t u32_t;
-typedef int32_t s32_t;
+typedef unsigned char u8_t;
+typedef signed char s8_t;
+typedef unsigned short u16_t;
+typedef signed short s16_t;
+typedef unsigned long u32_t;
+typedef signed long s32_t;
#if LWIP_HAVE_INT64
-typedef uint64_t u64_t;
-typedef int64_t s64_t;
+typedef unsigned long long u64_t;
+typedef signed long long s64_t;
#endif
typedef uintptr_t mem_ptr_t;
#endif
diff U3B netif/lowpan6.c netif/lowpan6.c
--- netif/lowpan6.c Fri Nov 23 04:57:02 2018
+++ netif/lowpan6.c Tue Jan 14 20:40:19 2020
@@ -679,7 +679,7 @@
/* check for duplicate */
lrh = lowpan6_data.reass_list;
while (lrh != NULL) {
- uint8_t discard = 0;
+ unsigned char discard = 0;
lrh_next = lrh->next_packet;
if ((lrh->sender_addr.addr_len == src.addr_len) &&
(memcmp(lrh->sender_addr.addr, src.addr, src.addr_len) == 0)) {
diff U3B netif/lowpan6_ble.c netif/lowpan6_ble.c
--- netif/lowpan6_ble.c Fri Nov 23 04:57:02 2018
+++ netif/lowpan6_ble.c Tue Jan 14 20:40:11 2020
@@ -107,7 +107,7 @@
* @see LWIP_RFC7668_LINUX_WORKAROUND_PUBLIC_ADDRESS
*/
void
-ble_addr_to_eui64(uint8_t *dst, const uint8_t *src, int public_addr)
+ble_addr_to_eui64(unsigned char *dst, const unsigned char *src, int public_addr)
{
/* according to RFC7668 ch 3.2.2. */
memcpy(dst, src, 3);
@@ -136,7 +136,7 @@
*
*/
void
-eui64_to_ble_addr(uint8_t *dst, const uint8_t *src)
+eui64_to_ble_addr(unsigned char *dst, const unsigned char *src)
{
/* according to RFC7668 ch 3.2.2. */
memcpy(dst,src,3);
lwIPのVisualStudio 2017向けプロジェクト
太郎くん
あとは、VisualStudio 2017でソリューションとプロジェクトを作る。
名称は「lwip_pcap」にしておこう。
太郎くん
あとは、lwIPのフォルダ構成とVisualStudio 2017上のフィルタ構成を一致させる感じで
ソースコードとヘッダファイルを追加していく。
太郎くん
これでとりあえずビルドが通るってのだけ確認。
フクさん
うん。
問題なさそうだねー。
太郎くん
となると後はnpcap向けのインターフェースか。
まとめ
太郎くん
まとめだよ。
- lwIPのソースコード修正。
- 以前のlwIP疑似受信の時の情報を流用。
- VisualStudio 2017でlwIPのソリューションとプロジェクトを作成。
- フィルタをフォルダ構成に合わせておくと見やすいかも。
バックナンバーはこちら。
コメント