const PROBE_MAXNAME = 64; const PROBE_COOKIE_LEN = 8; typedef string probe_name; typedef opaque probe_cookie[PROBE_COOKIE_LEN]; typedef opaque probe_blob<256>; typedef int probe_ints<>; typedef probe_name probe_tags[3]; enum probe_kind { PROBE_NONE = 0, PROBE_INT = 1, PROBE_TEXT = 2, PROBE_BLOB = 3 }; struct probe_point { int x; int y; }; struct probe_item { probe_kind kind; probe_name label; probe_point where; unsigned int flags; hyper big; unsigned hyper ubig; float ratio; double precise; bool present; probe_blob payload; }; union probe_value switch (probe_kind kind) { case PROBE_INT: int ival; case PROBE_TEXT: probe_name tval; case PROBE_BLOB: probe_blob bval; default: void; }; struct probe_chain { probe_item head; probe_chain *next; }; struct probe_request { probe_name who; probe_ints values; probe_cookie cookie; }; struct probe_reply { int status; probe_value result; probe_tags tags; }; program PROBE_PROG { version PROBE_VERS { void PROBE_NULL(void) = 0; probe_reply PROBE_ECHO(probe_request) = 1; probe_point PROBE_ADD(probe_point) = 2; probe_tags PROBE_TAGS(void) = 3; probe_chain PROBE_CHAIN(probe_item) = 4; } = 1; version PROBE_VERS2 { void PROBE_NULL(void) = 0; probe_reply PROBE_ECHO(probe_request) = 1; } = 2; } = 0x20000199;