Document of c-modernization-kit (porter) 1.0.0
Loading...
Searching...
No Matches
外側パケットフラグ (PotrPacket.flags)

Macros

#define POTR_FLAG_DATA   0x0001U
 データパケット (パックコンテナ) であることを示すフラグ。常に設定される。
#define POTR_FLAG_NACK   0x0002U
 再送要求パケットであることを示すフラグ。ack_num に要求通番を格納する。
#define POTR_FLAG_PING   0x0004U
 ヘルスチェック要求パケットであることを示すフラグ。ペイロードなし。
#define POTR_FLAG_REJECT   0x0008U
 再送不能通知パケットであることを示すフラグ。ack_num に再送不能な通番を格納する。
#define POTR_FLAG_FIN   0x0010U
 正常終了通知パケットであることを示すフラグ。送信者が potrCloseService 時に送出し、受信者は即座に DISCONNECTED へ遷移する。ペイロードなし。
#define POTR_FLAG_ENCRYPTED   0x0020U
 AES-256-GCM 認証タグが付与されていることを示す外側パケットフラグ。
POTR_FLAG_DATA と組み合わせる場合: [ヘッダー 32B][暗号文: packed_len B][GCM 認証タグ: 16B]。
単独で使用する場合 (PING/NACK/REJECT/FIN): ペイロードなし (平文 0B) の
GCM 認証タグのみ (16B) を格納する。[ヘッダー 32B][GCM 認証タグ: 16B]。
いずれの場合もヘッダー全体 (32B) が AAD として認証される。
Nonce (12B) = session_id (4B NBO) + flags (2B NBO) + seq_or_ack_num (4B NBO) + padding (2B 0x00)。
flags には本フラグを含んだ実際の送信フラグ値を使用する。
seq_or_ack_num は DATA/PING/FIN の場合 seq_num、NACK/REJECT の場合 ack_num。

Detailed Description

UDP で送受信される外側パケット (PotrPacket) の flags フィールドに設定するフラグです。
ペイロードエレメントのフラグ (ペイロードエレメントフラグ (パックコンテナ内エレメントヘッダー.flags)) とは独立したビット空間で管理します。

Macro Definition Documentation

◆ POTR_FLAG_DATA

#define POTR_FLAG_DATA   0x0001U

#include </__w/c-modernization-kit/c-modernization-kit/prod/porter/include/porter_const.h>

データパケット (パックコンテナ) であることを示すフラグ。常に設定される。

Definition at line 41 of file porter_const.h.

Referenced by packet_build_packed(), recv_thread_func(), and tcp_recv_thread_func().

◆ POTR_FLAG_NACK

#define POTR_FLAG_NACK   0x0002U

#include </__w/c-modernization-kit/c-modernization-kit/prod/porter/include/porter_const.h>

再送要求パケットであることを示すフラグ。ack_num に要求通番を格納する。

Definition at line 42 of file porter_const.h.

Referenced by packet_build_nack(), and recv_thread_func().

◆ POTR_FLAG_PING

#define POTR_FLAG_PING   0x0004U

#include </__w/c-modernization-kit/c-modernization-kit/prod/porter/include/porter_const.h>

ヘルスチェック要求パケットであることを示すフラグ。ペイロードなし。

Definition at line 43 of file porter_const.h.

Referenced by drain_recv_window(), n1_drain_recv_window(), packet_build_ping(), recv_thread_func(), and tcp_recv_thread_func().

◆ POTR_FLAG_REJECT

#define POTR_FLAG_REJECT   0x0008U

#include </__w/c-modernization-kit/c-modernization-kit/prod/porter/include/porter_const.h>

再送不能通知パケットであることを示すフラグ。ack_num に再送不能な通番を格納する。

Definition at line 44 of file porter_const.h.

Referenced by packet_build_reject(), and recv_thread_func().

◆ POTR_FLAG_FIN

#define POTR_FLAG_FIN   0x0010U

#include </__w/c-modernization-kit/c-modernization-kit/prod/porter/include/porter_const.h>

正常終了通知パケットであることを示すフラグ。送信者が potrCloseService 時に送出し、受信者は即座に DISCONNECTED へ遷移する。ペイロードなし。

Definition at line 45 of file porter_const.h.

Referenced by packet_build_fin(), and recv_thread_func().

◆ POTR_FLAG_ENCRYPTED

#define POTR_FLAG_ENCRYPTED   0x0020U

#include </__w/c-modernization-kit/c-modernization-kit/prod/porter/include/porter_const.h>

AES-256-GCM 認証タグが付与されていることを示す外側パケットフラグ。
POTR_FLAG_DATA と組み合わせる場合: [ヘッダー 32B][暗号文: packed_len B][GCM 認証タグ: 16B]。
単独で使用する場合 (PING/NACK/REJECT/FIN): ペイロードなし (平文 0B) の
GCM 認証タグのみ (16B) を格納する。[ヘッダー 32B][GCM 認証タグ: 16B]。
いずれの場合もヘッダー全体 (32B) が AAD として認証される。
Nonce (12B) = session_id (4B NBO) + flags (2B NBO) + seq_or_ack_num (4B NBO) + padding (2B 0x00)。
flags には本フラグを含んだ実際の送信フラグ値を使用する。
seq_or_ack_num は DATA/PING/FIN の場合 seq_num、NACK/REJECT の場合 ack_num。

Definition at line 46 of file porter_const.h.

Referenced by flush_packed(), flush_packed_peer(), health_thread_func(), n1_send_nack(), n1_send_ping_reply(), n1_send_reject(), peer_send_fin(), recv_thread_func(), send_fin(), send_nack(), send_ping_reply(), send_reject(), tcp_health_thread_func(), tcp_recv_thread_func(), and tcp_send_ping_reply().