# PotrServiceDef

    struct PotrServiceDef {
        int64_t service_id;
        PotrType type;
        uint16_t dst_port;
        uint16_t src_port;
        uint8_t ttl;
        uint8_t[3] _pad;
        uint32_t pack_wait_ms;
        char[POTR_MAX_ADDR_LEN] multicast_group;
        char[POTR_MAX_ADDR_LEN] broadcast_addr;
        char[POTR_MAX_PATH][POTR_MAX_ADDR_LEN] src_addr;
        char[POTR_MAX_PATH][POTR_MAX_ADDR_LEN] dst_addr;
        uint8_t[POTR_CRYPTO_KEY_SIZE] encrypt_key;
        int encrypt_enabled;
        uint32_t max_peers;
        uint32_t health_interval_ms;
        uint32_t health_timeout_ms;
        uint32_t reconnect_interval_ms;
        uint32_t connect_timeout_ms;
    }

サービス定義。

設定ファイルの [service.N] セクションから読み込まれるサービス設定です。

通信種別によって有効なフィールドが異なります。

# 1 属性

## 1.1 service_id

    int64_t service_id;

サービス ID。

## 1.2 type

    PotrType type;

通信種別。

## 1.3 dst_port

    uint16_t dst_port;

宛先ポート番号。サービスの識別子。受信者の bind ポート / 送信者の送信先ポート。(全通信種別で必須)

## 1.4 src_port

    uint16_t src_port;

送信者の送信元 bind ポート番号。0 = OS 自動選定。(全通信種別で省略可)

## 1.5 ttl

    uint8_t ttl;

マルチキャスト TTL。(multicast のみ)

## 1.6 _pad

    uint8_t[3] _pad;

パディング (pack_wait_ms を 4 バイト境界に揃える)。

## 1.7 pack_wait_ms

    uint32_t pack_wait_ms;

パッキング待ち時間 (ミリ秒)。最初の送信要求からこの時間だけ待ち合わせ、複数メッセージを 1 パケットにまとめる。0 = 即時送信 (パッキング待ちなし)。パケット容量が満杯になった場合はタイマーを無視して即時送信する。

## 1.8 multicast_group

    char[POTR_MAX_ADDR_LEN] multicast_group;

マルチキャストグループアドレス。(multicast のみ)

## 1.9 broadcast_addr

    char[POTR_MAX_ADDR_LEN] broadcast_addr;

ブロードキャスト宛先アドレス。省略時は 255.255.255.255。(broadcast のみ)

## 1.10 src_addr

    char[POTR_MAX_PATH][POTR_MAX_ADDR_LEN] src_addr;

送信元アドレス [0]=src_addr1 〜 [3]=src_addr4。送信者は bind / 送信インターフェース、受信者は送信元フィルタ。(全通信種別で必須)

## 1.11 dst_addr

    char[POTR_MAX_PATH][POTR_MAX_ADDR_LEN] dst_addr;

宛先アドレス [0]=dst_addr1 〜 [3]=dst_addr4。送信者は送信先、受信者は bind アドレス。(unicast のみ)

## 1.12 encrypt_key

    uint8_t[POTR_CRYPTO_KEY_SIZE] encrypt_key;

AES-256-GCM 事前共有鍵 (32 バイト)。encrypt_enabled が 0 の場合は未使用。

## 1.13 encrypt_enabled

    int encrypt_enabled;

非 0 のとき暗号化有効。設定ファイルに有効な encrypt_key が存在するときに 1 に設定される。

## 1.14 max_peers

    uint32_t max_peers;

N:1 モード時の最大同時接続ピア数。省略時: 1024。1:1 モードでは無視される。

## 1.15 health_interval_ms

    uint32_t health_interval_ms;

グローバルの udp/tcp_health_interval_ms をサービス単位で上書きする。0 = グローバル値を使用。

## 1.16 health_timeout_ms

    uint32_t health_timeout_ms;

グローバルの udp/tcp_health_timeout_ms をサービス単位で上書きする。0 = グローバル値を使用。

## 1.17 reconnect_interval_ms

    uint32_t reconnect_interval_ms;

SENDER 自動再接続間隔 (ms)。0 = 再接続なし。デフォルト: POTR_DEFAULT_RECONNECT_INTERVAL_MS。

## 1.18 connect_timeout_ms

    uint32_t connect_timeout_ms;

SENDER TCP 接続タイムアウト (ms)。0 = OS デフォルト。デフォルト: POTR_DEFAULT_CONNECT_TIMEOUT_MS。