📄 test-m2pa.c
字号:
return (result);}static intstop_tt(void){ struct itimerval setting = { {0, 0}, {0, 0} }; int result = __RESULT_SUCCESS; if (setitimer(ITIMER_REAL, &setting, NULL)) return __RESULT_FAILURE; if (stop_signals() != __RESULT_SUCCESS) result = __RESULT_FAILURE; timer_timeout = 0; return (result);}static long beg_time = 0;#if TEST_X400static int event = 0;static int expand = 0;static int oldmsg = 0;static int cntmsg = 0;static int oldisb = 0;static int oldret = 0;static int cntret = 0;#endif /* TEST_X400 */#if TEST_M2PA/* * M2PA Message Definitions */#define M2PA_PPI 5#define M2PA_MESSAGE_CLASS 11#define M2PA_VERSION 1#define M2PA_MTYPE_DATA 1#define M2PA_MTYPE_STATUS 2#define M2PA_MTYPE_PROVING 3#define M2PA_MTYPE_ACK 4#define M2PA_DATA_MESSAGE \ __constant_htonl((M2PA_VERSION<<24)|(M2PA_MESSAGE_CLASS<<8)|M2PA_MTYPE_DATA)#define M2PA_STATUS_MESSAGE \ __constant_htonl((M2PA_VERSION<<24)|(M2PA_MESSAGE_CLASS<<8)|M2PA_MTYPE_STATUS)#define M2PA_PROVING_MESSAGE \ __constant_htonl((M2PA_VERSION<<24)|(M2PA_MESSAGE_CLASS<<8)|M2PA_MTYPE_PROVING)#define M2PA_ACK_MESSAGE \ __constant_htonl((M2PA_VERSION<<24)|(M2PA_MESSAGE_CLASS<<8)|M2PA_MTYPE_ACK)#define M2PA_STATUS_STREAM 0#define M2PA_DATA_STREAM 1#define M2PA_STATUS_ALIGNMENT (__constant_htonl(1))#define M2PA_STATUS_PROVING_NORMAL (__constant_htonl(2))#define M2PA_STATUS_PROVING_EMERGENCY (__constant_htonl(3))#define M2PA_STATUS_IN_SERVICE (__constant_htonl(4))#define M2PA_STATUS_PROCESSOR_OUTAGE (__constant_htonl(5))#define M2PA_STATUS_PROCESSOR_OUTAGE_ENDED (__constant_htonl(6))#define M2PA_STATUS_BUSY (__constant_htonl(7))#define M2PA_STATUS_BUSY_ENDED (__constant_htonl(8))#define M2PA_STATUS_OUT_OF_SERVICE (__constant_htonl(9))#define M2PA_STATUS_NONE (__constant_htonl(10))#define M2PA_STATUS_INVALID (__constant_htonl(11))/* * Addresses */#if 1#ifndef SCTP_VERSION_2addr_t addrs[4];#else /* SCTP_VERSION_2 */struct sockaddr_in addrs[4][3];#endif /* SCTP_VERSION_2 */#elsestruct sockaddr_in addrs[4];#endifint anums[4] = { 3, 3, 3, 3 };#define TEST_PORT_NUMBER 18000unsigned short ports[4] = { TEST_PORT_NUMBER, TEST_PORT_NUMBER+1, TEST_PORT_NUMBER+2, TEST_PORT_NUMBER+3 };const char *addr_strings[4] = { "127.0.0.1", "127.0.0.2", "127.0.0.3", "127.0.0.4" };/* * Options */N_qos_sel_data_sctp_t qos_data = { .n_qos_type = N_QOS_SEL_DATA_SCTP, .ppi = 10, .sid = 0, .ssn = 0, .tsn = 0, .more = 0,};N_qos_sel_conn_sctp_t qos_conn = { .n_qos_type = N_QOS_SEL_CONN_SCTP, .i_streams = 1, .o_streams = 1,};N_qos_sel_info_sctp_t qos_info = { .n_qos_type = N_QOS_SEL_INFO_SCTP, .i_streams = 1, .o_streams = 1, .ppi = 10, .sid = 0, .max_inits = 12, .max_retrans = 12, .ck_life = -1, .ck_inc = -1, .hmac = -1, .throttle = -1, .max_sack = 0, .rto_ini = 0, .rto_min = 0, .rto_max = 0, .rtx_path = 0, .hb_itvl = 200, .options = 0,};#endif /* TEST_M2PA */char *errno_string(long err){ switch (err) { case 0: return ("ok"); case EPERM: return ("[EPERM]"); case ENOENT: return ("[ENOENT]"); case ESRCH: return ("[ESRCH]"); case EINTR: return ("[EINTR]"); case EIO: return ("[EIO]"); case ENXIO: return ("[ENXIO]"); case E2BIG: return ("[E2BIG]"); case ENOEXEC: return ("[ENOEXEC]"); case EBADF: return ("[EBADF]"); case ECHILD: return ("[ECHILD]"); case EAGAIN: return ("[EAGAIN]"); case ENOMEM: return ("[ENOMEM]"); case EACCES: return ("[EACCES]"); case EFAULT: return ("[EFAULT]"); case ENOTBLK: return ("[ENOTBLK]"); case EBUSY: return ("[EBUSY]"); case EEXIST: return ("[EEXIST]"); case EXDEV: return ("[EXDEV]"); case ENODEV: return ("[ENODEV]"); case ENOTDIR: return ("[ENOTDIR]"); case EISDIR: return ("[EISDIR]"); case EINVAL: return ("[EINVAL]"); case ENFILE: return ("[ENFILE]"); case EMFILE: return ("[EMFILE]"); case ENOTTY: return ("[ENOTTY]"); case ETXTBSY: return ("[ETXTBSY]"); case EFBIG: return ("[EFBIG]"); case ENOSPC: return ("[ENOSPC]"); case ESPIPE: return ("[ESPIPE]"); case EROFS: return ("[EROFS]"); case EMLINK: return ("[EMLINK]"); case EPIPE: return ("[EPIPE]"); case EDOM: return ("[EDOM]"); case ERANGE: return ("[ERANGE]"); case EDEADLK: return ("[EDEADLK]"); case ENAMETOOLONG: return ("[ENAMETOOLONG]"); case ENOLCK: return ("[ENOLCK]"); case ENOSYS: return ("[ENOSYS]"); case ENOTEMPTY: return ("[ENOTEMPTY]"); case ELOOP: return ("[ELOOP]"); case ENOMSG: return ("[ENOMSG]"); case EIDRM: return ("[EIDRM]"); case ECHRNG: return ("[ECHRNG]"); case EL2NSYNC: return ("[EL2NSYNC]"); case EL3HLT: return ("[EL3HLT]"); case EL3RST: return ("[EL3RST]"); case ELNRNG: return ("[ELNRNG]"); case EUNATCH: return ("[EUNATCH]"); case ENOCSI: return ("[ENOCSI]"); case EL2HLT: return ("[EL2HLT]"); case EBADE: return ("[EBADE]"); case EBADR: return ("[EBADR]"); case EXFULL: return ("[EXFULL]"); case ENOANO: return ("[ENOANO]"); case EBADRQC: return ("[EBADRQC]"); case EBADSLT: return ("[EBADSLT]"); case EBFONT: return ("[EBFONT]"); case ENOSTR: return ("[ENOSTR]"); case ENODATA: return ("[ENODATA]"); case ETIME: return ("[ETIME]"); case ENOSR: return ("[ENOSR]"); case ENONET: return ("[ENONET]"); case ENOPKG: return ("[ENOPKG]"); case EREMOTE: return ("[EREMOTE]"); case ENOLINK: return ("[ENOLINK]"); case EADV: return ("[EADV]"); case ESRMNT: return ("[ESRMNT]"); case ECOMM: return ("[ECOMM]"); case EPROTO: return ("[EPROTO]"); case EMULTIHOP: return ("[EMULTIHOP]"); case EDOTDOT: return ("[EDOTDOT]"); case EBADMSG: return ("[EBADMSG]"); case EOVERFLOW: return ("[EOVERFLOW]"); case ENOTUNIQ: return ("[ENOTUNIQ]"); case EBADFD: return ("[EBADFD]"); case EREMCHG: return ("[EREMCHG]"); case ELIBACC: return ("[ELIBACC]"); case ELIBBAD: return ("[ELIBBAD]"); case ELIBSCN: return ("[ELIBSCN]"); case ELIBMAX: return ("[ELIBMAX]"); case ELIBEXEC: return ("[ELIBEXEC]"); case EILSEQ: return ("[EILSEQ]"); case ERESTART: return ("[ERESTART]"); case ESTRPIPE: return ("[ESTRPIPE]"); case EUSERS: return ("[EUSERS]"); case ENOTSOCK: return ("[ENOTSOCK]"); case EDESTADDRREQ: return ("[EDESTADDRREQ]"); case EMSGSIZE: return ("[EMSGSIZE]"); case EPROTOTYPE: return ("[EPROTOTYPE]"); case ENOPROTOOPT: return ("[ENOPROTOOPT]"); case EPROTONOSUPPORT: return ("[EPROTONOSUPPORT]"); case ESOCKTNOSUPPORT: return ("[ESOCKTNOSUPPORT]"); case EOPNOTSUPP: return ("[EOPNOTSUPP]"); case EPFNOSUPPORT: return ("[EPFNOSUPPORT]"); case EAFNOSUPPORT: return ("[EAFNOSUPPORT]"); case EADDRINUSE: return ("[EADDRINUSE]"); case EADDRNOTAVAIL: return ("[EADDRNOTAVAIL]"); case ENETDOWN: return ("[ENETDOWN]"); case ENETUNREACH: return ("[ENETUNREACH]"); case ENETRESET: return ("[ENETRESET]"); case ECONNABORTED: return ("[ECONNABORTED]"); case ECONNRESET: return ("[ECONNRESET]"); case ENOBUFS: return ("[ENOBUFS]"); case EISCONN: return ("[EISCONN]"); case ENOTCONN: return ("[ENOTCONN]"); case ESHUTDOWN: return ("[ESHUTDOWN]"); case ETOOMANYREFS: return ("[ETOOMANYREFS]"); case ETIMEDOUT: return ("[ETIMEDOUT]"); case ECONNREFUSED: return ("[ECONNREFUSED]"); case EHOSTDOWN: return ("[EHOSTDOWN]"); case EHOSTUNREACH: return ("[EHOSTUNREACH]"); case EALREADY: return ("[EALREADY]"); case EINPROGRESS: return ("[EINPROGRESS]"); case ESTALE: return ("[ESTALE]"); case EUCLEAN: return ("[EUCLEAN]"); case ENOTNAM: return ("[ENOTNAM]"); case ENAVAIL: return ("[ENAVAIL]"); case EISNAM: return ("[EISNAM]"); case EREMOTEIO: return ("[EREMOTEIO]"); case EDQUOT: return ("[EDQUOT]"); case ENOMEDIUM: return ("[ENOMEDIUM]"); case EMEDIUMTYPE: return ("[EMEDIUMTYPE]"); default: { static char buf[32]; snprintf(buf, sizeof(buf), "[%ld]", (long) err); return buf; } }}#if TEST_M2UAchar *terrno_string(t_uscalar_t terr, t_scalar_t uerr){ switch (terr) { case TBADADDR: return ("[TBADADDR]"); case TBADOPT: return ("[TBADOPT]"); case TACCES: return ("[TACCES]"); case TBADF: return ("[TBADF]"); case TNOADDR: return ("[TNOADDR]"); case TOUTSTATE: return ("[TOUTSTATE]"); case TBADSEQ: return ("[TBADSEQ]"); case TSYSERR: return errno_string(uerr); case TLOOK: return ("[TLOOK]"); case TBADDATA: return ("[TBADDATA]"); case TBUFOVFLW: return ("[TBUFOVFLW]"); case TFLOW: return ("[TFLOW]"); case TNODATA: return ("[TNODATA]"); case TNODIS: return ("[TNODIS]"); case TNOUDERR: return ("[TNOUDERR]"); case TBADFLAG: return ("[TBADFLAG]"); case TNOREL: return ("[TNOREL]"); case TNOTSUPPORT: return ("[TNOTSUPPORT]"); case TSTATECHNG: return ("[TSTATECHNG]"); case TNOSTRUCTYPE: return ("[TNOSTRUCTYPE]"); case TBADNAME: return ("[TBADNAME]"); case TBADQLEN: return ("[TBADQLEN]"); case TADDRBUSY: return ("[TADDRBUSY]"); case TINDOUT: return ("[TINDOUT]"); case TPROVMISMATCH: return ("[TPROVMISMATCH]"); case TRESQLEN: return ("[TRESQLEN]"); case TRESADDR: return ("[TRESADDR]"); case TQFULL: return ("[TQFULL]"); case TPROTO: return ("[TPROTO]"); default: { static char buf[32]; snprintf(buf, sizeof(buf), "[%lu]", (ulong) terr); return buf; } }}#endif /* TEST_M2UA */#if TEST_M2PAchar *nerrno_string(ulong nerr, long uerr){ switch (nerr) { case NBADADDR: return ("[NBADADDR]"); case NBADOPT: return ("[NBADOPT]"); case NACCESS: return ("[NACCESS]"); case NNOADDR: return ("[NNOADDR]"); case NOUTSTATE: return ("[NOUTSTATE]"); case NBADSEQ: return ("[NBADSEQ]"); case NSYSERR: return errno_string(uerr); case NBADDATA: return ("[NBADDATA]"); case NBADFLAG: return ("[NBADFLAG]"); case NNOTSUPPORT: return ("[NNOTSUPPORT]"); case NBOUND: return ("[NBOUND]"); case NBADQOSPARAM: return ("[NBADQOSPARAM]"); case NBADQOSTYPE: return ("[NBADQOSTYPE]"); case NBADTOKEN: return ("[NBADTOKEN]");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -