# porter/include/porter_const.h

# 1 ファイル

## 1.1 porter/include/porter_const.h

通信ライブラリの定数ファイル。

### 1.1.1 作者

c-modernization-kit sample team

### 1.1.2 バージョン

1.0.0

### 1.1.3 日付

2026/03/04

### 1.1.4 著作権

Copyright (C) CompanyName, Ltd. 2026. All rights reserved.

# 2 カテゴリー

## 2.1 送信オプションフラグ (potrSend の flags 引数)

### 2.1.1 定数、マクロ

#### 2.1.1.1 POTR_SEND_COMPRESS

    #define POTR_SEND_COMPRESS 0x0001U

メッセージを圧縮して送信します。圧縮後のサイズが元のサイズ以上の場合は自動的に非圧縮で送信します。

#### 2.1.1.2 POTR_SEND_BLOCKING

    #define POTR_SEND_BLOCKING 0x0002U

ブロッキング送信を行います。0 を指定するとノンブロッキング送信を行います。

## 2.2 戻り値

### 2.2.1 定数、マクロ

#### 2.2.1.1 POTR_SUCCESS

    #define POTR_SUCCESS 0

成功の戻り値を表す定数。

#### 2.2.1.2 POTR_ERROR

    #define POTR_ERROR -1

失敗の戻り値を表す定数。

#### 2.2.1.3 POTR_ERROR_DISCONNECTED

    #define POTR_ERROR_DISCONNECTED 1

TCP 全 path 切断中に potrSend() を呼んだ場合の戻り値。

## 2.3 外側パケットフラグ (PotrPacket.flags)

### 2.3.1 定数、マクロ

#### 2.3.1.1 POTR_FLAG_DATA

    #define POTR_FLAG_DATA 0x0001U

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

#### 2.3.1.2 POTR_FLAG_NACK

    #define POTR_FLAG_NACK 0x0002U

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

#### 2.3.1.3 POTR_FLAG_PING

    #define POTR_FLAG_PING 0x0004U

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

#### 2.3.1.4 POTR_FLAG_REJECT

    #define POTR_FLAG_REJECT 0x0008U

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

#### 2.3.1.5 POTR_FLAG_FIN

    #define POTR_FLAG_FIN 0x0010U

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

#### 2.3.1.6 POTR_FLAG_ENCRYPTED

    #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。

## 2.4 ペイロードエレメントフラグ (パックコンテナ内エレメントヘッダー.flags)

### 2.4.1 定数、マクロ

#### 2.4.1.1 POTR_FLAG_MORE_FRAG

    #define POTR_FLAG_MORE_FRAG 0x0001U

後続フラグメントが存在することを示すペイロードエレメントフラグ。メッセージが複数ペイロードエレメントに分割された場合、最終フラグメント以外に設定する。

#### 2.4.1.2 POTR_FLAG_COMPRESSED

    #define POTR_FLAG_COMPRESSED 0x0002U

ペイロードが圧縮されていることを示すペイロードエレメントフラグ。圧縮はメッセージ単位で行い、全フラグメントのペイロードエレメントに設定する。先頭 4 バイトが元サイズ (NBO)、続くデータが raw DEFLATE。

## 2.5 デフォルト値

### 2.5.1 定数、マクロ

#### 2.5.1.1 POTR_DEFAULT_WINDOW_SIZE

    #define POTR_DEFAULT_WINDOW_SIZE 16U

デフォルトウィンドウサイズ (パケット数)。

#### 2.5.1.2 POTR_DEFAULT_MAX_PAYLOAD

    #define POTR_DEFAULT_MAX_PAYLOAD 1400U

デフォルト最大ペイロード長 (バイト)。

#### 2.5.1.3 POTR_DEFAULT_TTL

    #define POTR_DEFAULT_TTL 1U

デフォルトマルチキャスト TTL。

#### 2.5.1.4 POTR_DEFAULT_HEALTH_INTERVAL_MS

    #define POTR_DEFAULT_HEALTH_INTERVAL_MS 0U

デフォルトヘルスチェック送信間隔 (ミリ秒)。0 = 無効。

#### 2.5.1.5 POTR_DEFAULT_HEALTH_TIMEOUT_MS

    #define POTR_DEFAULT_HEALTH_TIMEOUT_MS 0U

デフォルトヘルスチェックタイムアウト (ミリ秒)。0 = 無効。

#### 2.5.1.6 POTR_DEFAULT_PACK_WAIT_MS

    #define POTR_DEFAULT_PACK_WAIT_MS 0U

デフォルトパッキング待ち時間 (ミリ秒)。0 = 即時送信。

#### 2.5.1.7 POTR_DEFAULT_RECONNECT_INTERVAL_MS

    #define POTR_DEFAULT_RECONNECT_INTERVAL_MS 5000U

SENDER 自動再接続間隔のデフォルト (ミリ秒)。TCP 通信種別 (POTR_TYPE_TCP / POTR_TYPE_TCP_BIDIR) のみ有効。

#### 2.5.1.8 POTR_DEFAULT_CONNECT_TIMEOUT_MS

    #define POTR_DEFAULT_CONNECT_TIMEOUT_MS 10000U

SENDER TCP 接続タイムアウトのデフォルト (ミリ秒)。0 = OS デフォルト。TCP 通信種別のみ有効。

## 2.6 暗号化定数 (AES-256-GCM)

### 2.6.1 定数、マクロ

#### 2.6.1.1 POTR_CRYPTO_KEY_SIZE

    #define POTR_CRYPTO_KEY_SIZE 32U

AES-256-GCM 鍵サイズ (バイト)。設定ファイルの encrypt_key に 64 文字 hex で指定する。

#### 2.6.1.2 POTR_CRYPTO_NONCE_SIZE

    #define POTR_CRYPTO_NONCE_SIZE 12U

AES-256-GCM ノンスサイズ (バイト)。session_id (4B NBO) + flags (2B NBO) + seq_or_ack_num (4B NBO) + padding (2B 0x00) で構成する。

#### 2.6.1.3 POTR_CRYPTO_TAG_SIZE

    #define POTR_CRYPTO_TAG_SIZE 16U

AES-256-GCM 認証タグサイズ (バイト)。暗号文の直後に付加する。

## 2.7 上限値・デフォルト値

### 2.7.1 定数、マクロ

#### 2.7.1.1 POTR_MAX_ADDR_LEN

    #define POTR_MAX_ADDR_LEN 64U

アドレス文字列の最大長 (バイト、終端 NUL を含む)。

#### 2.7.1.2 POTR_MAX_PAYLOAD

    #define POTR_MAX_PAYLOAD 65507U

ペイロードの最大長 (バイト)。UDP 最大ペイロード (65535 - IP20 - UDP8)。max_payload 設定値のバリデーション上限として使用する。

#### 2.7.1.3 POTR_MAX_WINDOW_SIZE

    #define POTR_MAX_WINDOW_SIZE 256U

ウィンドウサイズの最大値 (パケット数)。window_size 設定値のバリデーション上限として使用する。

#### 2.7.1.4 POTR_MAX_SERVICES

    #define POTR_MAX_SERVICES 64U

config_list_service_ids() の初期バッファ容量。サービス数がこれを超えた場合は realloc で自動拡張する。

#### 2.7.1.5 POTR_MAX_MESSAGE_SIZE

    #define POTR_MAX_MESSAGE_SIZE 65535U

1 回の potrSend で送信できる最大メッセージ長 (バイト) のデフォルト値。設定ファイルの max_message_size で変更可能。フラグメント化により max_payload を超えるメッセージも送受信できる。

#### 2.7.1.6 POTR_SEND_QUEUE_DEPTH

    #define POTR_SEND_QUEUE_DEPTH 1024U

非同期送信キューの最大エントリ数のデフォルト値。設定ファイルの send_queue_depth で変更可能。メッセージがフラグメント化される場合、1 メッセージが複数エントリを占有する。

#### 2.7.1.7 POTR_PAYLOAD_ELEM_HDR_SIZE

    #define POTR_PAYLOAD_ELEM_HDR_SIZE 6U

パックコンテナ内ペイロードエレメントのヘッダーサイズ (バイト)。flags (2): POTR_FLAG_MORE_FRAG / POTR_FLAG_COMPRESSED を格納 + payload_len (4): uint32_t (NBO)。通番は外側パケットで管理するためペイロードエレメントには含まない。

#### 2.7.1.8 POTR_MAX_PATH

    #define POTR_MAX_PATH 4U

マルチパスの最大パス数。