typedef struct arms_distribution_id {
uint16_t version;
uint32_t vendor_code;
uint16_t sa_type;
uint64_t sa_code;
} distribution_id_t;
Distribution ID の VERSION 値。
Distribution ID の VENDOR CODE 値。
Distribution ID の SA TYPE 値。
Distribution ID の SA CODE 値。
format 0 2 6 8 16(octet) +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ |VERSION| VENDOR CODE |SA TYPE| SA CODE | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ |<---------------------- distribution ID ---------------------->|
- VERSION
- システムのversion情報を識別する2octetの整数。
- 0x0000 予約
- 0x0001 SMFv2
- 0xFFFF 予約
- VENDOR CODE
- サービスアダプタ供給元を識別する4octetの整数。
- 0x00000000 予約
- 0xFFFFFFFF 予約
- SA TYPE
- サービスアダプタの種類を識別する2octetの整数。
- 0x0000 予約
- 0x0001~0x007F 予約
- 0xFFFF 予約
- SA CODE
- サービスアダプタを識別する8octetの整数。発行元は各ベンダ。
SA CODE フィールドは、ベンダごとに一意であればよい。 MAC アドレスやシリアル番号を利用して生成する方法が考えられる。 他のフィールドはシステム全体で一意になるようにIIJ にて割り当てをおこなう。
typedef struct arms_callback_tbl {
int version;
arms_config_cb_t config_cb;
arms_line_ctrl_cb_t line_ctrl_cb;
arms_state_cb_t state_cb;
arms_log_cb_t log_cb;
arms_read_config_cb_t read_config_cb;
arms_get_status_cb_t get_status_cb;
arms_command_cb_t command_cb;
arms_app_event_cb_t app_event_cb;
arms_hb_store_statistics_t hb_store_statistics_cb;
} arms_callback_tbl_t;
開発環境のバージョンをライブラリに知らせる。常に ARMS_API_VERSIONを指定する。
コンフィグコールバック関数を指定する。
回線制御コールバック関数を指定する。
ステートコールバック関数を指定する。
ログコールバック関数を指定する。
コンフィグ読み出しコールバック関数を指定する。
ステータス取得コールバック関数を指定する。
コマンド実行コールバック関数を指定する。
イベントコールバック関数を指定する。
Heartbeat情報収集コールバック関数を指定する。
typedef struct arms_line_description {
int type;
void *line_conf;
} arms_line_desc_t;
回線種別。値の一覧は以下の通り。
回線情報。typeの値によってそれぞれ内容が異なる。
typedef struct arms_line_conf_anonpppoe {
int ifindex;
} arms_line_conf_anonpppoe_t;
SAが複数のインターフェイスを持つ場合に、インターフェイスを識別するために利用するインターフェイスインデックス番号。 この番号はコールバック関数にそのまま渡され、ライブラリでは使用されない。
匿名回線を利用する接続を指定する。 PPPoE のアカウント情報はライブラリ内で保持しており、指定する必要はな い。制御コールバックを呼ぶ時点で自動的にセットされる。制御コールバッ クが呼ばれる際のパラメータは以下の通り:
line_type = ARMS_LINE_PPPOE あるいは ARMS_LINE_PPPOE_IPV6
line_conf.ifindex = 指定したifindex
line_conf.id = 匿名アカウント用ID
line_conf.pass = 匿名アカウント用Passphrase
制御コールバックが、ARMS_LINE_ANONPPPOE や ARMS_LINE_ANONPPPOE_IPV6 で呼ばれることはない。
typedef struct arms_line_conf_pppoe {
int ifindex;
char id[MAX_PPP_ID];
char pass[MAX_PPP_PASS];
} arms_line_conf_pppoe_t;
SAが複数のインターフェイスを持つ場合に、インターフェイスを識別するために利用するインターフェイスインデックス番号。 この番号はコールバック関数にそのまま渡され、ライブラリでは使用されない。
PPPのID。
PPPのパスワード。
typedef struct arms_line_conf_anonmobile {
int ifindex;
} arms_line_conf_anonmobile_t;
SAが複数のインターフェイスを持つ場合に、インターフェイスを識別するために利用するインターフェイスインデックス番号。 この番号はコールバック関数にそのまま渡され、ライブラリでは使用されない。
匿名モバイル回線を利用する接続を指定する。 PPP のアカウント情報はライブラリ内で保持しており、指定する必要はな い。制御コールバックを呼ぶ時点で自動的にセットされる。制御コールバッ クが呼ばれる際のパラメータは以下の通り:
line_type = ARMS_LINE_MOBILE
line_conf.ifindex = 指定したifindex
line_conf.telno = 接続先電話番号
line_conf.cid = 使用するCID 番号
line_conf.apn = 接続先APN 名称
line_conf.pdp = 接続先PDP 種別
line_conf.id = 匿名アカウント用ID
line_conf.pass = 匿名アカウント用Passphrase
制御コールバックが、ARMS_LINE_ANONMOBILE で呼ばれることはない。
typedef struct arms_line_conf_mobile {
int ifindex;
char telno[MAX_MOBILE_TEL_LEN];
int cid;
char apn[MAX_MOBILE_APN_LEN];
char pdp[MAX_MOBILE_PDP_LEN];
char id[MAX_PPP_ID];
char pass[MAX_PPP_PASS];
char ipaddr[48];
} arms_line_conf_mobile_t;
SAが複数のインターフェイスを持つ場合に、インターフェイスを識別するために利用するインターフェイスインデックス番号。 この番号はコールバック関数にそのまま渡され、ライブラリでは使用されない。
電話番号。
CID。
APN。
PDP-Type。
PPPのID。
PPPのパスワード。
IPアドレス。
typedef struct arms_hbt_info {
const char *host;
int port;
const char *passphrase;
int interval;
int numalg;
const char *algorithm[MAX_HBT_ALGORITHMS];
} arms_hbt_info_t;
Heartbeat送信先ホスト名。
Heartbeat送信先ポート番号。
Heartbeatパスフレーズ。
Heartbeat送信インターバル[秒]。
Heartbeatハッシュアルゴリズムの数。最大で3つまで渡される。
Heartbeatハッシュアルゴリズムの文字配列。
typedef struct arms_connection_info {
int method;
int af;
union {
/* simple info */
struct {
char sa_address[128];
int sa_port;
} simple_info;
/* tunnel info */
int tunnel_info[MAX_RS_INFO];
} un;
} arms_connection_info_t;
シンプル接続において、最後に push-confirmation に成功した際の、 サービスアダプタのIPアドレス文字列。
シンプル接続においてサーバに通知している、 サービスアダプタのポート番号