Ethernet II 封包(Frame)

Preamble(7) SFD(1) DA(6) SA(6) Ether type(2) Payload PAD FCS(4)
  • Preamble:一連串的1010…10,用來同步
  • SFD(start of frame delimiter):為10101011,用來表示經同步之後,資料的起始
  • DA(Destination Address):目標的MAC位址。
  • SA(Source Address):來源的MAC位址。
  • Ether type:長度或是 Ethernet Protocol ID。
    #define ETH_P_IP              0x0800          /* Internet Protocol packet     */
    #define ETH_P_ARP               0x0806          /* Address Resolution packet    */
    #define ETH_P_ATALK     0x809B          /* Appletalk DDP                */
    #define ETH_P_AARP              0x80F3          /* Appletalk AARP               */
    #define ETH_P_8021Q     0x8100                  /* 802.1Q VLAN Extended Header  */
    #define ETH_P_IPX               0x8137          /* IPX over DIX                 */
    #define ETH_P_IPV6              0x86DD          /* IPv6 over bluebook           */
    #define ETH_P_PPP_DISC  0x8863          /* PPPoE discovery messages     */
    #define ETH_P_PPP_SES   0x8864          /* PPPoE session messages       */
    #define ETH_P_PAE               0x888E          /* Port Access Entity (IEEE 802.1X) */
    
  • Payload: MAC封包所要傳送的資料內容,也就是IP封包或者ARP封包等等。
  • PAD(Padding):Ethernet封包長度介於46~1500bytes之間,因此假設IP封包長度沒有符合就必須做補滿的動作。
  • FCS(Frame check sequence, CRC32):Checksum,用來確認傳送資料是否有錯誤。
  • accept_eth_proto 存放允許的 protocol,在 rdct_default_setting() 存入三組 ETH_P_ARP, ETH_P_IPV6, ETH_P_PAE。

eth_hdr()

struct ethhdr 其實就是直接取得 DA(6) 的指標

台南小新 發表在 痞客邦 留言(0) 人氣()

command

  • ipsec setup start
    啟動 ipsec daemon

台南小新 發表在 痞客邦 留言(0) 人氣()

修改 Makefile

@@ -53,7 +53,7 @@
 # but we use a local copy if we don't find it.
 #
 #KERNELSRC=/lib/modules/`uname -r`/build/
-KERNELSRC?=./linux
+KERNELSRC=$(ROOTDIR)/$(LINUXDIR)
 OSFLAGS?= -DLINUX -I$(KERNELSRC)/include/
 #
 # Uncomment the following to use the kernel interface under Linux
@@ -112,7 +112,7 @@
 MANDIR?=$(DESTDIR)${PREFIX}/share/man
 
 
-all: $(EXEC) pfc $(CONTROL_EXEC)
+all: $(EXEC)
 
 clean:
        rm -f $(OBJS) $(EXEC) pfc.o pfc $(CONTROL_EXEC)
  • 修正 KERNELSRC 目錄位置
  • 移除 pfc 及 xl2tpd-control,因為用不到,這樣就可以不用 libpcap。

台南小新 發表在 痞客邦 留言(0) 人氣()

@@ -22,7 +22,7 @@ server.modules              = (
 ##                              "mod_trigger_b4_dl",
                                 "mod_auth",
 #                               "mod_status",
-##                              "mod_setenv",
+                                "mod_setenv",
 ##                              "mod_fastcgi",
 ##                              "mod_proxy",
 ##                              "mod_simple_vhost",
@@ -368,3 +368,9 @@ ssi.extension              = ( ".shtml" )
 ## the above is same as:
 #var.a=1
 
+$HTTP["url"] != "" {
+  setenv.add-response-header = ( "Cache-Control" => "no-store, no-cache, must-revalidate, post-check=0, pre-check=0" )
+  etag.use-inode = "disable"
+  etag.use-mtime = "disable"
+  etag.use-size = "disable"
+}

台南小新 發表在 痞客邦 留言(0) 人氣()

--- a/source/vendors/Mediatek/MT7623/config/256M_256M_config.uclibc0933-3.10.20.x
+++ b/source/vendors/Mediatek/MT7623/config/256M_256M_config.uclibc0933-3.10.20.x
@@ -145,7 +145,8 @@ UCLIBC_HAS_IPV6=y
 UCLIBC_HAS_RPC=y
 UCLIBC_HAS_FULL_RPC=y
 # UCLIBC_HAS_REENTRANT_RPC is not set
-# UCLIBC_USE_NETLINK is not set
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
 UCLIBC_HAS_BSD_RES_CLOSE=y
 UCLIBC_HAS_COMPAT_RES_STATE=y
 UCLIBC_HAS_EXTRA_COMPAT_RES_STATE=y

--- a/source/uClibc-0.9.33.2/libc/inet/ifaddrs.c
+++ b/source/uClibc-0.9.33.2/libc/inet/ifaddrs.c
@@ -37,6 +37,8 @@
 #include 
 #include 
 
+typedef long __kernel_long_t;
+typedef unsigned long __kernel_ulong_t;
 #include "netlinkaccess.h"

--- a/source/uClibc-0.9.33.2/libc/inet/if_index.c
+++ b/source/uClibc-0.9.33.2/libc/inet/if_index.c
@@ -34,6 +34,8 @@
 #include 
 #include 
 
+typedef long __kernel_long_t;
+typedef unsigned long __kernel_ulong_t;
 #include "netlinkaccess.h"

台南小新 發表在 痞客邦 留言(0) 人氣()