26#define PKTLAB_IP4_ADDR_LEN PKTLAB_IPV4_WO_MSK_ADDR_LEN
27#define PKTLAB_IP4_MASK_LEN \
28 (PKTLAB_IPV4_W_MSK_ADDR_LEN-PKTLAB_IPV4_W_MSK_ADDR_LEN)
29#define PKTLAB_IP6_ADDR_LEN PKTLAB_IPV6_ADDR_LEN
31#define PKTLAB_IPV4_W_MSK_ADDR_LEN 8
32#define PKTLAB_IPV4_WO_MSK_ADDR_LEN 4
33#define PKTLAB_IPV6_ADDR_LEN 16
35#define PKTLAB_ADDRLEN_MAX PKTLAB_IP6_ADDR_LEN
36#define PKTLAB_PORTLEN_MAX 2
38#define PKTLAB_DEFAULT_ADDR_STR "127.0.0.1"
44#define PKTLAB_DEFAULT_EXP_PORT_STR "20556"
49#define PKTLAB_DEFAULT_PUB_PORT_STR "20556"
54#define PKTLAB_DEFAULT_SUB_PORT_STR "20557"
56#define PKTLAB_DEFAULT_SPEC_STR \
57 PKTLAB_DEFAULT_ADDR_STR ":" PKTLAB_DEFAULT_EXP_PORT_STR
63#define PKTLAB_MAX_SKT_CNT 0x100
69#define PKTLAB_MAX_LADDR_CNT 0x100
75#define PKTLAB_MAX_LDNSADDR_CNT 0x10
77#define PKTLAB_SHA256_DIGEST_LEN 32
78#define PKTLAB_ED25519_SIG_LEN 64
91#define PKTLAB_TICKS_PER_SECOND UINT64_C(1000000000)
92#define PKTLAB_TIME_MAX UINT64_MAX
139#define PKTLAB_XDESCR_DATTR_PAIR_SEP '='
140#define PKTLAB_XDESCR_DATTR_PAIR_END ';'
146#define PKTLAB_XDESCR_DATTR_NAMELEN_MIN 0x1
152#define PKTLAB_XDESCR_DATTR_NAMELEN_MAX 0x20
158#define PKTLAB_XDESCR_DATTR_VALUELEN_MIN 0x1
164#define PKTLAB_XDESCR_DATTR_VALUELEN_MAX 0x100
173 uint_fast32_t namelen;
174 uint_fast32_t valuelen;
189 const char * xdescr, uint_fast32_t xdescrlen,
207 char * buf, uint_fast32_t buflen, uint_fast32_t * used);
221 const char * dattr, uint_fast32_t dattrlen,
238 char * buf, uint_fast32_t buflen, uint_fast32_t * used);
260 const char * xdescr, uint_fast32_t xdescrlen,
261 const char * dattr, uint_fast32_t dattrlen);
267#define PKTLAB_CHANNELID_LEN_MIN 1
268#define PKTLAB_CHANNELID_LEN_MAX PKTLAB_SHA256_DIGEST_LEN
276 uint_fast32_t channellen;
295 void ** chlistptr, uint_fast32_t * chlistlen);
310 const void * chlistptr, uint_fast32_t chlistlen,
369 uint_fast32_t hostlen;
392 const void * restrict ptr, uint_fast32_t len);
402#define PKTLAB_VMEMADDR_CURPKT (0x0)
403#define PKTLAB_VMEMADDR_CURPKT_DATA (PKTLAB_VMEMADDR_CURPKT)
404#define PKTLAB_VMEMADDR_CURPKT_LEN (PKTLAB_VMEMADDR_CURPKT+0x1000000)
405#define PKTLAB_VMEMADDR_CURPKT_SKTID (PKTLAB_VMEMADDR_CURPKT+0x1000010)
407#define PKTLAB_VMEMADDR_CURPKT_SL (0x1000011)
408#define PKTLAB_VMEMADDR_CURPKT_DATA_FL (sizeof(uint8_t)*0x1000000)
409#define PKTLAB_VMEMADDR_CURPKT_LEN_FL (sizeof(uint32_t))
410#define PKTLAB_VMEMADDR_CURPKT_SKTID_FL (sizeof(uint8_t))
413#define PKTLAB_VMEMADDR_SYSPARAM (0x10000000)
414#define PKTLAB_VMEMADDR_SYSPARAM_IP4NO (PKTLAB_VMEMADDR_SYSPARAM)
415#define PKTLAB_VMEMADDR_SYSPARAM_IP6NO (PKTLAB_VMEMADDR_SYSPARAM+0x1)
416#define PKTLAB_VMEMADDR_SYSPARAM_TRANSSUP (PKTLAB_VMEMADDR_SYSPARAM+0x2)
417#define PKTLAB_VMEMADDR_SYSPARAM_BUFMAXDUP (PKTLAB_VMEMADDR_SYSPARAM+0x6)
418#define PKTLAB_VMEMADDR_SYSPARAM_IP4LS (PKTLAB_VMEMADDR_SYSPARAM+0x100)
419#define PKTLAB_VMEMADDR_SYSPARAM_IP6LS (PKTLAB_VMEMADDR_SYSPARAM+0x1000)
420#define PKTLAB_VMEMADDR_SYSPARAM_TIME (PKTLAB_VMEMADDR_SYSPARAM+0x10000)
421#define PKTLAB_VMEMADDR_SYSPARAM_BUFMAX (PKTLAB_VMEMADDR_SYSPARAM+0x10010)
422#define PKTLAB_VMEMADDR_SYSPARAM_BUFUSED (PKTLAB_VMEMADDR_SYSPARAM+0x10014)
423#define PKTLAB_VMEMADDR_SYSPARAM_IP4DNSNO (PKTLAB_VMEMADDR_SYSPARAM+0x20000)
424#define PKTLAB_VMEMADDR_SYSPARAM_IP6DNSNO (PKTLAB_VMEMADDR_SYSPARAM+0x20001)
425#define PKTLAB_VMEMADDR_SYSPARAM_IP4DNSLS (PKTLAB_VMEMADDR_SYSPARAM+0x20010)
426#define PKTLAB_VMEMADDR_SYSPARAM_IP6DNSLS (PKTLAB_VMEMADDR_SYSPARAM+0x20100)
427#define PKTLAB_VMEMADDR_SYSPARAM_IP4HDRMOD (PKTLAB_VMEMADDR_SYSPARAM+0x20200)
428#define PKTLAB_VMEMADDR_SYSPARAM_IP6HDRMOD (PKTLAB_VMEMADDR_SYSPARAM+0x20210)
429#define PKTLAB_VMEMADDR_SYSPARAM_HOSTID (PKTLAB_VMEMADDR_SYSPARAM+0x30000)
430#define PKTLAB_VMEMADDR_SYSPARAM_LATLONG (PKTLAB_VMEMADDR_SYSPARAM+0x30100)
431#define PKTLAB_VMEMADDR_SYSPARAM_OSINFO (PKTLAB_VMEMADDR_SYSPARAM+0x30200)
433#define PKTLAB_VMEMADDR_SYSPARAM_SL (0x30400)
434#define PKTLAB_VMEMADDR_SYSPARAM_IP4NO_FL (sizeof(uint8_t))
435#define PKTLAB_VMEMADDR_SYSPARAM_IP6NO_FL (sizeof(uint8_t))
436#define PKTLAB_VMEMADDR_SYSPARAM_TRANSSUP_FL (sizeof(uint32_t))
437#define PKTLAB_VMEMADDR_SYSPARAM_IP4LS_FL (sizeof(uint8_t)*PKTLAB_IPV4_W_MSK_ADDR_LEN*0x100)
438#define PKTLAB_VMEMADDR_SYSPARAM_IP6LS_FL (sizeof(uint8_t)*PKTLAB_IPV6_ADDR_LEN*0x100)
439#define PKTLAB_VMEMADDR_SYSPARAM_TIME_FL (sizeof(pktlab_time_t))
440#define PKTLAB_VMEMADDR_SYSPARAM_BUFMAX_FL (sizeof(uint32_t))
441#define PKTLAB_VMEMADDR_SYSPARAM_BUFUSED_FL (sizeof(uint32_t))
442#define PKTLAB_VMEMADDR_SYSPARAM_IP4DNSNO_FL (sizeof(uint8_t))
443#define PKTLAB_VMEMADDR_SYSPARAM_IP6DNSNO_FL (sizeof(uint8_t))
444#define PKTLAB_VMEMADDR_SYSPARAM_IP4DNSLS_FL (sizeof(uint8_t)*PKTLAB_IPV4_WO_MSK_ADDR_LEN*0x10)
445#define PKTLAB_VMEMADDR_SYSPARAM_IP6DNSLS_FL (sizeof(uint8_t)*PKTLAB_IPV6_ADDR_LEN*0x10)
446#define PKTLAB_VMEMADDR_SYSPARAM_IP4HDRMOD_FL (sizeof(uint8_t)*0xC)
447#define PKTLAB_VMEMADDR_SYSPARAM_IP6HDRMOD_FL (sizeof(uint8_t)*0x8)
448#define PKTLAB_VMEMADDR_SYSPARAM_HOSTID_FL (sizeof(char)*0x100)
449#define PKTLAB_VMEMADDR_SYSPARAM_LATLONG_FL (sizeof(char)*0x40)
450#define PKTLAB_VMEMADDR_SYSPARAM_OSINFO_FL (sizeof(char)*0x200)
453#define PKTLAB_VMEMADDR_SKTINFO (0x20000000)
454#define PKTLAB_VMEMADDR_SKTINFO_BLKLEN (0x400)
455#define PKTLAB_VMEMADDR_SKTINFO_FAMILY (0x0)
456#define PKTLAB_VMEMADDR_SKTINFO_PROTO (0x1)
457#define PKTLAB_VMEMADDR_SKTINFO_STAT (0x2)
458#define PKTLAB_VMEMADDR_SKTINFO_LADDR (0x10)
459#define PKTLAB_VMEMADDR_SKTINFO_RADDR (0x20)
460#define PKTLAB_VMEMADDR_SKTINFO_LPORT (0x30)
461#define PKTLAB_VMEMADDR_SKTINFO_RPORT (0x32)
462#define PKTLAB_VMEMADDR_SKTINFO_RBUFSZ (0x40)
463#define PKTLAB_VMEMADDR_SKTINFO_RBUFUSED (0x44)
464#define PKTLAB_VMEMADDR_SKTINFO_DROPSTAT (0x50)
465#define PKTLAB_VMEMADDR_SKTINFO_NSENDERR (0x60)
466#define PKTLAB_VMEMADDR_SKTINFO_NSENDERRTAG (0x61)
467#define PKTLAB_VMEMADDR_SKTINFO_NOTIFMASK (0x70)
468#define PKTLAB_VMEMADDR_SKTINFO_CTFL (0x100)
470#define PKTLAB_VMEMADDR_SKTINFO_SL (PKTLAB_VMEMADDR_SKTINFO_BLKLEN*0x100)
471#define PKTLAB_VMEMADDR_SKTINFO_PROTO_FL (sizeof(uint8_t))
472#define PKTLAB_VMEMADDR_SKTINFO_STAT_FL (sizeof(int8_t))
473#define PKTLAB_VMEMADDR_SKTINFO_LADDR_FL (sizeof(uint8_t)*PKTLAB_ADDRLEN_MAX)
474#define PKTLAB_VMEMADDR_SKTINFO_RADDR_FL (sizeof(uint8_t)*PKTLAB_ADDRLEN_MAX)
475#define PKTLAB_VMEMADDR_SKTINFO_LPORT_FL (sizeof(uint16_t))
476#define PKTLAB_VMEMADDR_SKTINFO_RPORT_FL (sizeof(uint16_t))
477#define PKTLAB_VMEMADDR_SKTINFO_RBUFSZ_FL (sizeof(uint32_t))
478#define PKTLAB_VMEMADDR_SKTINFO_RBUFUSED_FL (sizeof(uint32_t))
479#define PKTLAB_VMEMADDR_SKTINFO_DROPSTAT_FL (sizeof(uint32_t)*2)
480#define PKTLAB_VMEMADDR_SKTINFO_NSENDERR_FL (sizeof(int8_t))
481#define PKTLAB_VMEMADDR_SKTINFO_NSENDERRTAG_FL (sizeof(uint16_t))
482#define PKTLAB_VMEMADDR_SKTINFO_NOTIFMASK_FL (sizeof(uint16_t))
483#define PKTLAB_VMEMADDR_SKTINFO_CTFL_FL (sizeof(uint8_t)*0x80)
486#define PKTLAB_VMEMADDR_NSENDTSTP (0x30000000)
487#define PKTLAB_VMEMADDR_MONSCRATCH (0x40000000)
488#define PKTLAB_VMEMADDR_MONPERSIST (0x50000000)
490#define PKTLAB_VMEMADDR_NSENDTSTP_SL (sizeof(pktlab_time_t)*0x10000)
491#define PKTLAB_VMEMADDR_MONSCRATCH_SL (sizeof(uint8_t)*0x10000000)
492#define PKTLAB_VMEMADDR_MONPERSIST_SL (sizeof(uint8_t)*0x10000000)
497#define PKTLAB_RAW_SUP_BIT_INDX 0
498#define PKTLAB_TCP_SUP_BIT_INDX 1
499#define PKTLAB_UDP_SUP_BIT_INDX 2
504enum pktlab_rawhdr_info {
505 PKTLAB_RAWHDR_NOCHG = 0,
506 PKTLAB_RAWHDR_CHG = 1,
507 PKTLAB_RAWHDR_0FILL = 2
513enum pktlab_socket_state {
514 PKTLAB_SKTST_FREE = 0,
515 PKTLAB_SKTST_OPENING = 1,
516 PKTLAB_SKTST_OPEN = 2,
517 PKTLAB_SKTST_EOF = 3,
518 PKTLAB_SKTST_WFIN = 4,
519 PKTLAB_SKTST_END = 5,
520 PKTLAB_SKTST_REFUSED = -1,
521 PKTLAB_SKTST_RESET = -2,
522 PKTLAB_SKTST_TIMEDOUT = -3,
523 PKTLAB_SKTST_UNREACH = -4,
524 PKTLAB_SKTST_UNKFAULT = -128
530enum pktlab_nsend_err {
531 PKTLAB_NSEND_SUCCESS = 0,
532 PKTLAB_NSEND_NORES = 1,
533 PKTLAB_NSEND_BADPKT = 2,
534 PKTLAB_NSEND_TIMEDOUT = 3,
535 PKTLAB_NSEND_RESET = 4,
536 PKTLAB_NSEND_UNREACH = 5,
537 PKTLAB_NSEND_WFIN = 6,
538 PKTLAB_NSEND_UNKFAULT = 127
544#define PKTLAB_NOTIFMASK_NTAG (0x1 << 1)
545#define PKTLAB_NOTIFMASK_NSTAT (0x1 << 2)
546#define PKTLAB_NOTIFMASK_NDATA (0x1 << 3)
547#define PKTLAB_NOTIFMASK_NDROP (0x1 << 4)
554typedef void (*pktlab_vmem_reader_t) (
556 uint_fast32_t off, uint_fast32_t len,
void * restrict dst);
558typedef void (*pktlab_vmem_writer_t) (
560 uint_fast32_t off, uint_fast32_t len,
const void * restrict src);
564 pktlab_vmem_reader_t read;
565 pktlab_vmem_writer_t write;
569extern void pktlab_vmem_read (
571 uint_fast32_t addr, uint_fast32_t len,
void * restrict dst);
573extern void pktlab_vmem_write (
575 uint_fast32_t addr, uint_fast32_t len,
const void * restrict src);
577extern void pktlab_buffer_reader (
579 uint_fast32_t addr, uint_fast32_t len,
void * restrict dst);
581extern void pktlab_buffer_writer (
583 uint_fast32_t addr, uint_fast32_t len,
const void * restrict src);
592#define PKTLAB_MREAD_MAX UINT32_C(0x10000)
593#define PKTLAB_NDATA_MAX UINT32_C(0x10000)
610#define PKTLAB_IP4_PROTO 0x4
611#define PKTLAB_IP6_PROTO 0x6
631#define PKTLAB_RAW_PROTO 0x00
632#define PKTLAB_TCP_PROTO 0x06
633#define PKTLAB_UDP_PROTO 0x11
645#define PKTLAB_NCTL_TCP_FIN 0x1
670#define PKTLAB_TCPEV_ESTABLISHED 0x0
671#define PKTLAB_TCPEV_RESET 0x1
672#define PKTLAB_TCPEV_TIMEOUT 0x2
673#define PKTLAB_TCPEV_PEERCLOSED 0x3
674#define PKTLAB_TCPEV_UNKNOWN 0xFF
686 PKTLAB_UNDEF_MESSAGE = 0x00,
689 PKTLAB_CDATA_MESSAGE = 0x20,
690 PKTLAB_START_MESSAGE = 0x21,
691 PKTLAB_END_MESSAGE = 0x22,
692 PKTLAB_YIELD_MESSAGE = 0X23,
693 PKTLAB_CONT_MESSAGE = 0X24,
695 PKTLAB_MREAD_MESSAGE = 0x28,
696 PKTLAB_MWRITE_MESSAGE = 0x29,
697 PKTLAB_NOPEN_MESSAGE = 0x2A,
698 PKTLAB_NCLOSE_MESSAGE = 0x2B,
699 PKTLAB_NSEND_MESSAGE = 0x2C,
700 PKTLAB_NCAP_MESSAGE = 0x2D,
701 PKTLAB_NCTL_MESSAGE = 0x2E,
704 PKTLAB_XCERT_MESSAGE = 0x30,
705 PKTLAB_XPUB_MESSAGE = 0x31,
708 PKTLAB_XSUB_MESSAGE = 0x38,
711 PKTLAB_RESULT_MESSAGE = 0x40,
712 PKTLAB_MDATA_MESSAGE = 0x41,
715 PKTLAB_NTAG_MESSAGE = 0x60,
716 PKTLAB_NSTAT_MESSAGE = 0x61,
717 PKTLAB_NDATA_MESSAGE = 0x62,
718 PKTLAB_NDROP_MESSAGE = 0x63,
720 PKTLAB_SUSPD_MESSAGE = 0x68,
721 PKTLAB_RESUMD_MESSAGE = 0x69,
723 PKTLAB_XNOTIFY_MESSAGE = 0x70,
726 PKTLAB_XREG_MESSAGE = 0x80,
743 PKTLAB_ECTLBADMSG = 0x10,
744 PKTLAB_ECTLNOTSUP = 0x11,
746 PKTLAB_ECRTNOMATCH = 0x20,
747 PKTLAB_ECRTATTACH = 0x21,
748 PKTLAB_ECRTBADFRM = 0x22,
749 PKTLAB_ECRTNOSPACE = 0x23,
751 PKTLAB_ESYSNOBUFS = 0x30,
752 PKTLAB_ESYSNOPERM = 0x31,
753 PKTLAB_ESKTINUSE = 0x32,
754 PKTLAB_ESKTNOTOPEN = 0x33,
755 PKTLAB_ESKTNOPRFAM = 0x34,
756 PKTLAB_ESKTNOPROTO = 0x35,
757 PKTLAB_ESKTNOADDR = 0x36,
758 PKTLAB_ESKTNOMATCH = 0x37,
759 PKTLAB_ESKTBADFILT = 0x38,
761 PKTLAB_ETCPNOPORT = 0x40,
762 PKTLAB_ETCPNOSEND = 0x41,
763 PKTLAB_EUDPNOPORT = 0x42,
765 PKTLAB_EPUBBADCH = 0x50,
766 PKTLAB_EPUBBADADDR = 0x51,
767 PKTLAB_EPUBBADENDT = 0x52,
768 PKTLAB_EPUBBADPR = 0x53,
769 PKTLAB_EPUBBADXD = 0x54,
771 PKTLAB_ESUBBADCH = 0x60,
773 PKTLAB_EUNKFAULT = 0xFFFF
847 const void* laddrptr;
848 const void* lportptr;
849 const void* raddrptr;
850 const void* rportptr;
866 const void* raddrptr;
868 const void* rportptr;
917 const void* raddrptr;
919 const void* rportptr;
932 const void* raddrptr;
934 const void* rportptr;
946 uint32_t unitcnt, bytecnt;
955 const void * chlistptr;
958 const void * xdescrptr;
963 const void * chlistptr;
966 const void * dattrptr;
977 const void * channelptr;
979 const void * xdescrptr;
984 const void * snikeyptr;
1014 const void * restrict ptr,
size_t len);
1020#define PKTLAB_ENCODE_IOVCNT 5
1025#define PKTLAB_ENCODE_BUFSZ (PKTLAB_HLEN+32)
1041 void * restrict buf,
struct iovec * restrict iov);
1249#define PKTLAB_PUBLICKEY_LEN 32
1256#define PKTLAB_PRIVATEKEY_LEN 32
1263#define PKTLAB_KEYID_LEN PKTLAB_SHA256_DIGEST_LEN
1270#define PKTLAB_SIGNATURE_LEN PKTLAB_ED25519_SIG_LEN
1300 const char * pem, uint_fast32_t pemlen,
1315 const uint8_t * der, uint_fast32_t derlen,
1330 const uint8_t * bytes, uint_fast32_t len,
1349 void * buf, uint_fast32_t buflen);
1360 void * buf, uint_fast32_t buflen);
1391 const char * pem, uint_fast32_t pemlen,
1407 const uint8_t * der, uint_fast32_t derlen,
1422 const uint8_t * bytes, uint_fast32_t len,
1441 void * buf, uint_fast32_t buflen);
1460 PKTLAB_CERT_SUBCMD = 0,
1461 PKTLAB_CERT_PUBCMD = 1,
1462 PKTLAB_CERT_EXPPRIV = 2,
1463 PKTLAB_CERT_DELPRIV = 3,
1464 PKTLAB_CERT_AGENT = 4,
1465 PKTLAB_CERT_UNKNOWN = 127
1476#define PKTLAB_DEL_TYPE_EXPPRIV 0x1
1477#define PKTLAB_DEL_TYPE_REPPRIV 0x2
1491#define PKTLAB_FILTER_DIGEST_LEN PKTLAB_SHA256_DIGEST_LEN
1492#define PKTLAB_MONITOR_DIGEST_LEN PKTLAB_SHA256_DIGEST_LEN
1531 uint32_t serialno_len;
1546 uint8_t * filter_digests;
1547 uint8_t * monitor_digests;
1548 uint_fast32_t ftcnt;
1549 uint_fast32_t mtcnt;
1550 int_fast32_t pathlen;
1555 uint8_t * filter_digests;
1556 uint8_t * monitor_digests;
1557 uint_fast32_t ftcnt;
1558 uint_fast32_t mtcnt;
1559 int_fast32_t pathlen;
1574#define PKTLAB_EXT_CERT_TYPE "1.2.3.1"
1575#define PKTLAB_EXT_CERT_DESCRIPTION "1.2.3.3"
1576#define PKTLAB_EXT_FILTER_DIGESTS "1.2.3.5"
1577#define PKTLAB_EXT_MONITOR_DIGESTS "1.2.3.6"
1578#define PKTLAB_EXT_PRIORITY "1.2.3.7"
1579#define PKTLAB_EXT_DEL_TYPE "1.2.3.8"
1582#define PKTLAB_CERTTYPE_STR_SUBCMD "subcmd"
1583#define PKTLAB_CERTTYPE_STR_PUBCMD "pubcmd"
1584#define PKTLAB_CERTTYPE_STR_EXPPRIV "exppriv"
1585#define PKTLAB_CERTTYPE_STR_DELPRIV "delpriv"
1586#define PKTLAB_CERTTYPE_STR_AGENT "agent"
1587#define PKTLAB_CERTTYPE_STR_UNKNOWN "unknown"
1619 const char * pem, uint_fast32_t pemlen,
1633 const uint8_t * der, uint_fast32_t derlen,
1647 void ** der, uint_fast32_t * derlen);
1702 uint8_t * agent_pubkey);
1761 uint_fast32_t certnum,
1762 uint_fast32_t rootnum,
1763 uint_fast32_t * verified_certnum,
1764 uint_fast32_t * used_root_indx);
1776 PKTLAB_PARSE_CHAIN_SUCCESS = 0,
1777 PKTLAB_PARSE_CHAIN_INVAL = 1,
1778 PKTLAB_PARSE_CHAIN_BAD_CHAIN = 2,
1779 PKTLAB_PARSE_CHAIN_BAD_KEY = 3,
1780 PKTLAB_PARSE_CHAIN_UNKNOWN_FAULT = 127,
1799 uint_fast32_t certnum,
const uint8_t * endpoint_key,
1801 uint8_t ** subable_channels, uint_fast32_t * channelnum);
1824 uint_fast32_t certnum,
1825 const uint8_t * controller_key,
1827 uint8_t ** ftdigests, uint_fast32_t * ftcnt,
1828 uint8_t ** mtdigests, uint_fast32_t * mtcnt,
1829 char *** priorities, uint_fast32_t * pcnt,
1830 uint8_t * subable_channel);
1843static inline uint_fast8_t
pktlab_get8(
const void * ptr);
1844static inline uint_fast16_t pktlab_get16b(
const void * ptr);
1845static inline uint_fast16_t pktlab_get16l(
const void * ptr);
1846static inline uint_fast32_t pktlab_get24b(
const void * ptr);
1847static inline uint_fast32_t pktlab_get24l(
const void * ptr);
1848static inline uint_fast32_t pktlab_get32b(
const void * ptr);
1849static inline uint_fast32_t pktlab_get32l(
const void * ptr);
1850static inline uint_fast64_t pktlab_get64b(
const void * ptr);
1851static inline uint_fast64_t pktlab_get64l(
const void * ptr);
1853#define pktlab_get16n pktlab_get16b
1854#define pktlab_get24n pktlab_get24b
1855#define pktlab_get32n pktlab_get32b
1856#define pktlab_get64n pktlab_get64b
1865static inline void pktlab_set8(
void * ptr, uint_fast8_t val);
1866static inline void pktlab_set16b(
void * ptr, uint_fast16_t val);
1867static inline void pktlab_set16l(
void * ptr, uint_fast16_t val);
1868static inline void pktlab_set24b(
void * ptr, uint_fast32_t val);
1869static inline void pktlab_set24l(
void * ptr, uint_fast32_t val);
1870static inline void pktlab_set32b(
void * ptr, uint_fast32_t val);
1871static inline void pktlab_set32l(
void * ptr, uint_fast32_t val);
1872static inline void pktlab_set64b(
void * ptr, uint_fast64_t val);
1873static inline void pktlab_set64l(
void * ptr, uint_fast64_t val);
1875#define pktlab_set16n pktlab_set16b
1876#define pktlab_set24n pktlab_set24b
1877#define pktlab_set32n pktlab_set32b
1878#define pktlab_set64n pktlab_set64b
1892static inline uint_fast32_t pktlab_hton32(uint_fast32_t x);
1893static inline uint_fast64_t pktlab_hton64(uint_fast64_t x);
1894static inline uint_fast16_t pktlab_ntoh16(uint_fast16_t x);
1895static inline uint_fast32_t pktlab_ntoh32(uint_fast32_t x);
1896static inline uint_fast64_t pktlab_ntoh64(uint_fast64_t x);
1911static inline bool pktlab_getbit8(uint_fast8_t bits, uint_fast8_t pos);
1912static inline bool pktlab_getbit16(uint_fast16_t bits, uint_fast8_t pos);
1913static inline bool pktlab_getbit32(uint_fast32_t bits, uint_fast8_t pos);
1914static inline bool pktlab_getbit64(uint_fast64_t bits, uint_fast8_t pos);
1925static inline uint_fast8_t
pktlab_setbit8(uint_fast8_t bits, uint_fast8_t pos);
1926static inline uint_fast16_t pktlab_setbit16(uint_fast16_t bits, uint_fast8_t pos);
1927static inline uint_fast32_t pktlab_setbit32(uint_fast32_t bits, uint_fast8_t pos);
1928static inline uint_fast64_t pktlab_setbit64(uint_fast64_t bits, uint_fast8_t pos);
1939static inline uint_fast8_t
pktlab_clrbit8(uint_fast8_t bits, uint_fast8_t pos);
1940static inline uint_fast16_t pktlab_clrbit16(uint_fast16_t bits, uint_fast8_t pos);
1941static inline uint_fast32_t pktlab_clrbit32(uint_fast32_t bits, uint_fast8_t pos);
1942static inline uint_fast64_t pktlab_clrbit64(uint_fast64_t bits, uint_fast8_t pos);
1949 return (uint64_t) sec * PKTLAB_TICKS_PER_SECOND;
1953 return (uint64_t) tv->tv_sec * PKTLAB_TICKS_PER_SECOND
1954 + (uint64_t) tv->tv_usec * PKTLAB_TICKS_PER_SECOND / 1000000;
1960 const uint64_t t_us = t / (PKTLAB_TICKS_PER_SECOND / 1000000);
1961 tv->tv_sec = t_us / 1000000;
1962 tv->tv_usec = t_us % 1000000;
1966 return t / PKTLAB_TICKS_PER_SECOND;
1970 return *(
const uint8_t*)ptr;
1973static inline uint_fast16_t pktlab_get16b(
const void * ptr) {
1974 const uint8_t * u8ptr = ptr;
1977 val = (uint_fast16_t) u8ptr[0] << 8;
1982static inline uint_fast16_t pktlab_get16l(
const void * ptr) {
1983 const uint8_t * u8ptr = ptr;
1986 val = (uint_fast16_t) u8ptr[1] << 8;
1991static inline uint_fast32_t pktlab_get24b(
const void * ptr) {
1992 const uint8_t * u8ptr = ptr;
1995 val = (uint_fast32_t) u8ptr[0] << 16;
1996 val |= (uint_fast16_t) u8ptr[1] << 8;
2001static inline uint_fast32_t pktlab_get24l(
const void * ptr) {
2002 const uint8_t * u8ptr = ptr;
2005 val = (uint_fast32_t) u8ptr[2] << 16;
2006 val |= (uint_fast16_t) u8ptr[1] << 8;
2011static inline uint_fast32_t pktlab_get32b(
const void * ptr) {
2014 val = (uint_fast32_t) pktlab_get16b(ptr) << 16;
2015 val |= pktlab_get16b(ptr+2);
2019static inline uint_fast32_t pktlab_get32l(
const void * ptr) {
2022 val = (uint_fast32_t) pktlab_get16l(ptr+2) << 16;
2023 val |= pktlab_get16l(ptr);
2027static inline uint_fast64_t pktlab_get64b(
const void * ptr) {
2030 val = (uint_fast64_t) pktlab_get32b(ptr) << 32;
2031 val |= pktlab_get32b(ptr+4);
2035static inline uint_fast64_t pktlab_get64l(
const void * ptr) {
2038 val = (uint_fast64_t) pktlab_get32l(ptr+4) << 32;
2039 val |= pktlab_get32l(ptr);
2044 *(uint8_t*)ptr = val;
2047static inline void pktlab_set16b(
void * ptr, uint_fast16_t val) {
2048 uint8_t * u8ptr = ptr;
2049 u8ptr[0] = val >> 8;
2050 u8ptr[1] = val >> 0;
2053static inline void pktlab_set16l(
void * ptr, uint_fast16_t val) {
2054 uint8_t * u8ptr = ptr;
2055 u8ptr[1] = val >> 8;
2056 u8ptr[0] = val >> 0;
2059static inline void pktlab_set24b(
void * ptr, uint_fast32_t val) {
2060 uint8_t * u8ptr = ptr;
2061 u8ptr[0] = val >> 16;
2062 u8ptr[1] = val >> 8;
2063 u8ptr[2] = val >> 0;
2066static inline void pktlab_set24l(
void * ptr, uint_fast32_t val) {
2067 uint8_t * u8ptr = ptr;
2068 u8ptr[2] = val >> 16;
2069 u8ptr[1] = val >> 8;
2070 u8ptr[0] = val >> 0;
2073static inline void pktlab_set32b(
void * ptr, uint_fast32_t val) {
2074 pktlab_set16b(ptr, val >> 16);
2075 pktlab_set16b(ptr+2, val);
2078static inline void pktlab_set32l(
void * ptr, uint_fast32_t val) {
2079 pktlab_set16l(ptr+2, val >> 16);
2080 pktlab_set16l(ptr, val);
2083static inline void pktlab_set64b(
void * ptr, uint_fast64_t val) {
2084 pktlab_set32b(ptr, val >> 32);
2085 pktlab_set32b(ptr+4, val);
2088static inline void pktlab_set64l(
void * ptr, uint_fast64_t val) {
2089 pktlab_set32l(ptr+4, val >> 32);
2090 pktlab_set32l(ptr, val);
2097static inline uint_fast32_t pktlab_hton32(uint_fast32_t x) {
2101static inline uint_fast64_t pktlab_hton64(uint_fast64_t x) {
2102 uint_fast32_t hi, lo;
2105 lo = x & UINT32_C(0xffffffff);
2106 return ((uint_fast64_t) pktlab_hton32(lo) << 32) | pktlab_hton32(hi);
2109static inline uint_fast16_t pktlab_ntoh16(uint_fast16_t x) {
2113static inline uint_fast32_t pktlab_ntoh32(uint_fast32_t x) {
2117static inline uint_fast64_t pktlab_ntoh64(uint_fast64_t x) {
2118 uint_fast32_t hi, lo;
2120 lo = pktlab_ntoh32(x >> 32);
2121 hi = pktlab_ntoh32(x & UINT32_C(0xffffffff));
2122 return ((uint_fast64_t) hi << 32) | lo;
2126 return pktlab_getbit64(bits, pos);
2129static inline bool pktlab_getbit16(uint_fast16_t bits, uint_fast8_t pos) {
2130 return pktlab_getbit64(bits, pos);
2133static inline bool pktlab_getbit32(uint_fast32_t bits, uint_fast8_t pos) {
2134 return pktlab_getbit64(bits, pos);
2137static inline bool pktlab_getbit64(uint_fast64_t bits, uint_fast8_t pos) {
2138 return (pos >= 0x40) ? false : (bits & ((uint_fast64_t) 1 << pos));
2143 return pktlab_setbit64(bits, pos);
2146static inline uint_fast16_t pktlab_setbit16(uint_fast16_t bits, uint_fast8_t pos) {
2147 return pktlab_setbit64(bits, pos);
2150static inline uint_fast32_t pktlab_setbit32(uint_fast32_t bits, uint_fast8_t pos) {
2151 return pktlab_setbit64(bits, pos);
2154static inline uint_fast64_t pktlab_setbit64(uint_fast64_t bits, uint_fast8_t pos) {
2155 return (pos >= 0x40) ? bits : (bits | ((uint_fast64_t) 1 << pos));
2160 return pktlab_clrbit64(bits, pos);
2163static inline uint_fast16_t pktlab_clrbit16(uint_fast16_t bits, uint_fast8_t pos) {
2164 return pktlab_clrbit64(bits, pos);
2167static inline uint_fast32_t pktlab_clrbit32(uint_fast32_t bits, uint_fast8_t pos) {
2168 return pktlab_clrbit64(bits, pos);
2171static inline uint_fast64_t pktlab_clrbit64(uint_fast64_t bits, uint_fast8_t pos) {
2172 return (pos >= 0x40) ? bits : (bits & ~((uint_fast64_t) 1 << pos));
int pktlab_decode_dattr(const char *dattr, uint_fast32_t dattrlen, struct pktlab_xdescr_dattr_pair **pairs, uint_fast32_t *paircnt)
Decode an encoded endpoint attribute (dattr) string.
struct pktlab_privatekey * pktlab_create_privatekey(void)
Allocate initialized pktlab private key struct.
static void pktlab_time_to_timeval(pktlab_time_t t, struct timeval *tv)
Convert time period in pktlab ticks to struct timeval.
Definition: pktlab.h:1957
pktlab_time_t pktlab_time_now(void)
Get current pktlab time.
int pktlab_decode_chlist(const void *chlistptr, uint_fast32_t chlistlen, struct pktlab_channel **channels)
Decode a channel list.
int pktlab_load_privatekey_der(const uint8_t *der, uint_fast32_t derlen, const char *passphrase, struct pktlab_privatekey *k)
Load pktlab private key struct via raw PKCS8 byte array.
int pktlab_get_key_identifier(const struct pktlab_publickey *k, void *buf, uint_fast32_t buflen)
Get key identifier for a loaded pktlab public key struct.
pktlab_uri_type
pktlab defined URI types.
Definition: pktlab.h:349
@ EXP_URI_TYPE
Definition: pktlab.h:350
@ MALFORMED_URI_TYPE
Definition: pktlab.h:352
@ BROKER_URI_TYPE
Definition: pktlab.h:351
int pktlab_load_publickey_der(const uint8_t *der, uint_fast32_t derlen, struct pktlab_publickey *k)
Load pktlab public key struct via raw SubjectPublicKeyInfo byte array.
size_t pktlab_decode_message(struct pktlab_message *restrict msg, const void *restrict ptr, size_t len)
Decode pktlab message.
pktlab_message_type
pktlab defined message types.
Definition: pktlab.h:685
struct pktlab_reader * pktlab_create_reader(pktlab_read_t read, void *aux)
Get initialized pktlab reader struct.
int pktlab_cleanup_cert(struct pktlab_certificate *cert)
Free an allocated pktlab certificate struct.
static uint_fast16_t pktlab_hton16(uint_fast16_t x)
Convert 16-bit unsigned integer from host byte order to network byte order.
Definition: pktlab.h:2093
static uint_fast8_t pktlab_clrbit8(uint_fast8_t bits, uint_fast8_t pos)
Clear bit in unsigned integer at bit position.
Definition: pktlab.h:2159
static pktlab_time_t pktlab_time_sec(uint_fast32_t sec)
Convert seconds to pktlab ticks.
Definition: pktlab.h:1948
const char * pktlab_sktstate_name(enum pktlab_socket_state state)
Get text description of pktlab endpoint skt state.
int pktlab_encode_dattr(const struct pktlab_xdescr_dattr_pair *pairs, uint_fast32_t paircnt, char *buf, uint_fast32_t buflen, uint_fast32_t *used)
Encode an endpoint attribute (dattr) string.
int pktlab_flush_writer(struct pktlab_writer *w)
Flush pktlab writer internal buffer.
ssize_t(* pktlab_write_t)(void *aux, const void *buf, size_t nbyte)
Function pointer type for writer write function.
Definition: pktlab.h:1134
int pktlab_parse_uri(struct pktlab_uri *restrict uri_info, const void *restrict ptr, uint_fast32_t len)
Decode a pktlab URI.
const char * pktlab_cert_type_name(int cert_type)
Get pktlab certificate type string from pktlab certificate type value.
int pktlab_decode_certificate(const struct pktlab_certificate *cert, const struct pktlab_publickey *signkey, struct pktlab_cert_info **ptr)
Decode pktlab certificate information from loaded pktlab certificate struct.
int pktlab_cleanup_publickey(struct pktlab_publickey *k)
Free an allocated pktlab public key struct.
int pktlab_load_cert_pem(const char *pem, uint_fast32_t pemlen, struct pktlab_certificate *cert)
Load pktlab certificate struct via PEM-encoded pktlab certificate char array.
void pktlab_close_reader(struct pktlab_reader *r)
Close and free pktlab reader struct.
int pktlab_get_publickey_bytes(const struct pktlab_publickey *k, void *buf, uint_fast32_t buflen)
Get raw public key byte array from loaded pktlab public key struct.
struct pktlab_publickey * pktlab_create_publickey(void)
Allocate initialized pktlab public key struct.
void pktlab_close_writer(struct pktlab_writer *w)
Close and free pktlab writer struct.
void * pktlab_reader_readaux(const struct pktlab_reader *r)
Get pktlab reader struct aux information.
int pktlab_encode_message(const struct pktlab_message *restrict msg, void *restrict buf, struct iovec *restrict iov)
Encode pktlab message.
int pktlab_get_agent_key(const struct pktlab_certificate *agent_cert, uint8_t *agent_pubkey)
Get pktlab agent certificate subject (signee) public key.
int pktlab_load_publickey_pem(const char *pem, uint_fast32_t pemlen, struct pktlab_publickey *k)
Load pktlab public key struct via PEM-encoded public key char array.
ssize_t(* pktlab_read_t)(void *aux, void *buf, size_t buflen)
Function pointer type for reader read function.
Definition: pktlab.h:1071
int pktlab_load_cert_der(const uint8_t *der, uint_fast32_t derlen, struct pktlab_certificate *cert)
Load pktlab certificate struct via DER-encode pktlab certificate byte array.
pktlab_parse_cert_chain_rst
pktlab certificate chain parsing result values.
Definition: pktlab.h:1775
struct pktlab_certificate * pktlab_create_cert(void)
Allocate initialized pktlab certificate struct.
int pktlab_load_privatekey_raw(const uint8_t *bytes, uint_fast32_t len, struct pktlab_privatekey *k)
Load pktlab private key struct via raw private key byte array.
int pktlab_get_cert_der(const struct pktlab_certificate *cert, void **der, uint_fast32_t *derlen)
Get DER-encoded pktlab certificate bytes from loaded pktlab certificate struct.
int pktlab_parse_endpoint_rep_cert_chain(struct pktlab_certificate **cert_ls, uint_fast32_t certnum, const uint8_t *endpoint_key, struct pktlab_publickey *root_eop_key, uint8_t **subable_channels, uint_fast32_t *channelnum)
Parse pktlab endpoint representation privilege certificate chain for subscribable channel information...
static uint_fast8_t pktlab_setbit8(uint_fast8_t bits, uint_fast8_t pos)
Set bit in unsigned integer at bit position.
Definition: pktlab.h:2142
void * pktlab_writer_writeaux(const struct pktlab_writer *w)
Get pktlab writer struct aux information.
struct pktlab_message * pktlab_create_result_message(enum pktlab_status status)
Get fields-set pktlab result message.
pktlab_auth_mode
pktlab certificate chain verification mode values.
Definition: pktlab.h:1713
@ PKTLAB_AUTH_AGENT
Definition: pktlab.h:1716
@ PKTLAB_CONTROLLER_AUTH_ENDPOINT
Definition: pktlab.h:1714
@ PKTLAB_ENDPOINT_AUTH_CONTROLLER
Definition: pktlab.h:1715
@ PKTLAB_NO_VERIFY
Definition: pktlab.h:1717
int pktlab_load_privatekey_pem(const char *pem, uint_fast32_t pemlen, const char *passphrase, struct pktlab_privatekey *k)
Load pktlab private key struct via PEM-encoded private key char array.
pktlab_filter_type
pktlab defined filter types.
Definition: pktlab.h:328
@ PKTLAB_CBPF
Definition: pktlab.h:329
@ PKTLAB_EBPF
Definition: pktlab.h:330
bool pktlab_xdescr_dattr_match(const char *xdescr, uint_fast32_t xdescrlen, const char *dattr, uint_fast32_t dattrlen)
Match an experiment descriptor (xdescr) string to an endpoint attribute (dattr) string.
int pktlab_encode_xdescr(const struct pktlab_xdescr_dattr_pair *pairs, uint_fast32_t paircnt, char *buf, uint_fast32_t buflen, uint_fast32_t *used)
Encode an experiment descriptor (xdescr) string.
pktlab_time_t pktlab_tm_to_time(const struct tm *tm)
Convert time in struct tm to pktlab time.
size_t pktlab_writer_unsent(const struct pktlab_writer *w)
Get writer internal buffered content length.
int pktlab_parse_controller_exp_cert_chain(struct pktlab_certificate **cert_ls, uint_fast32_t certnum, const uint8_t *controller_key, struct pktlab_publickey *trusted_eop_key, uint8_t **ftdigests, uint_fast32_t *ftcnt, uint8_t **mtdigests, uint_fast32_t *mtcnt, char ***priorities, uint_fast32_t *pcnt, uint8_t *subable_channel)
Parse pktlab controller experiment privilege certificate chain for subscribable channel and experimen...
#define PKTLAB_KEYID_LEN
Key identifier length for pktlab keys in bytes.
Definition: pktlab.h:1263
void pktlab_free_channels(struct pktlab_channel *channels)
Free an allocated channel linked list.
int pktlab_encode_chlist(const struct pktlab_channel *channels, void **chlistptr, uint_fast32_t *chlistlen)
Encode a channel list.
int pktlab_cleanup_privatekey(struct pktlab_privatekey *k)
Free an allocated pktlab private key struct.
int pktlab_verify_certificate_signature(const struct pktlab_certificate *cert, const struct pktlab_publickey *signkey)
Verify the pktlab certificate signature.
pktlab_status
pktlab defined errid values.
Definition: pktlab.h:740
pktlab_decode_rst
pktlab certificate decoding result values.
Definition: pktlab.h:1500
@ PKTLAB_DECODE_BAD_SIGALG
Definition: pktlab.h:1503
@ PKTLAB_DECODE_BAD_DEL_TYPE
Definition: pktlab.h:1519
@ PKTLAB_DECODE_BAD_VALIDITY
Definition: pktlab.h:1510
@ PKTLAB_DECODE_BAD_X509_VER
Definition: pktlab.h:1505
@ PKTLAB_DECODE_INVAL
Definition: pktlab.h:1502
@ PKTLAB_DECODE_UNKNOWN_FAULT
Definition: pktlab.h:1520
@ PKTLAB_DECODE_BAD_SUBJ_PUBKEY
Definition: pktlab.h:1511
@ PKTLAB_DECODE_BAD_CERT_DESC
Definition: pktlab.h:1515
@ PKTLAB_DECODE_BAD_BC
Definition: pktlab.h:1514
@ PKTLAB_DECODE_BAD_SERIAL
Definition: pktlab.h:1509
@ PKTLAB_DECODE_BAD_FILTER_DIGESTS
Definition: pktlab.h:1517
@ PKTLAB_DECODE_BAD_MONITOR_DIGESTS
Definition: pktlab.h:1518
@ PKTLAB_DECODE_BAD_SIGNATURE
Definition: pktlab.h:1504
@ PKTLAB_DECODE_BAD_SID
Definition: pktlab.h:1513
@ PKTLAB_DECODE_SUCCESS
Definition: pktlab.h:1501
@ PKTLAB_DECODE_BAD_KEYUSAGE
Definition: pktlab.h:1508
@ PKTLAB_DECODE_BAD_AID
Definition: pktlab.h:1512
@ PKTLAB_DECODE_BAD_CERT_TYPE
Definition: pktlab.h:1507
@ PKTLAB_DECODE_USING_UNUSED_FIELD
Definition: pktlab.h:1506
@ PKTLAB_DECODE_BAD_PRIORITY
Definition: pktlab.h:1516
#define PKTLAB_PUBLICKEY_LEN
Raw public key length for pktlab keys in bytes.
Definition: pktlab.h:1249
int pktlab_verify_cert_chain(int auth_mode, struct pktlab_certificate **cert_ls, struct pktlab_publickey **root_ls, struct pktlab_certificate ***verified_cert_ls, uint_fast32_t certnum, uint_fast32_t rootnum, uint_fast32_t *verified_certnum, uint_fast32_t *used_root_indx)
Verify pktlab certificate chain.
int pktlab_cert_type_name_to_id(const char *name)
Get pktlab certificate type value from pktlab certificate type string.
pktlab_cert_type
pktlab defined certificate types.
Definition: pktlab.h:1459
static bool pktlab_getbit8(uint_fast8_t bits, uint_fast8_t pos)
Get bit from unsigned integer at bit position.
Definition: pktlab.h:2125
int pktlab_get_privatekey_bytes(const struct pktlab_privatekey *k, void *buf, uint_fast32_t buflen)
Get raw private key byte array from loaded pktlab private key struct.
int pktlab_read_message(struct pktlab_reader *restrict r, struct pktlab_message **restrict msgptr)
pktlab reader read message.
int pktlab_decode_xdescr(const char *xdescr, uint_fast32_t xdescrlen, struct pktlab_xdescr_dattr_pair **pairs, uint_fast32_t *paircnt)
Decode an encoded experiment descriptor (xdescr) string.
static uint_fast32_t pktlab_time_to_unix_time(pktlab_time_t t)
Convert a pktlab time to Unix time (in second precision).
Definition: pktlab.h:1965
int pktlab_load_publickey_raw(const uint8_t *bytes, uint_fast32_t len, struct pktlab_publickey *k)
Load pktlab public key struct via raw public key byte array.
static uint_fast8_t pktlab_get8(const void *ptr)
Get 8-bit unsigned integer from byte array.
Definition: pktlab.h:1969
static pktlab_time_t pktlab_timeval_to_time(const struct timeval *tv)
Convert time period in struct timeval to pktlab ticks.
Definition: pktlab.h:1952
struct pktlab_writer * pktlab_create_writer(pktlab_write_t write, void *aux)
Get initialized pktlab writer struct.
int pktlab_write_message(struct pktlab_writer *restrict w, const struct pktlab_message *restrict msg)
pktlab writer write message.
uint64_t pktlab_time_t
Variable type for pktlab time.
Definition: pktlab.h:89
pktlab_verify_rst
pktlab certificate chain verification result values.
Definition: pktlab.h:1726
@ PKTLAB_VERIFY_NOT_ENOUGH_CERT
Definition: pktlab.h:1730
@ PKTLAB_VERIFY_BAD_CERT
Definition: pktlab.h:1729
@ PKTLAB_VERIFY_UNKNOWN_FAULT
Definition: pktlab.h:1738
@ PKTLAB_VERIFY_END_OF_PHASES
Definition: pktlab.h:1736
@ PKTLAB_VERIFY_INVAL
Definition: pktlab.h:1728
@ PKTLAB_VERIFY_UNEXPECTED_CERT
Definition: pktlab.h:1732
@ PKTLAB_VERIFY_NO_MATCHING_SIGN_KEY
Definition: pktlab.h:1734
@ PKTLAB_VERIFY_EXPIRED_CERT
Definition: pktlab.h:1733
@ PKTLAB_VERIFY_BAD_DEL_TYPE
Definition: pktlab.h:1737
@ PKTLAB_VERIFY_PATHLEN_EXCEEDED
Definition: pktlab.h:1735
@ PKTLAB_VERIFY_SUCCESS
Definition: pktlab.h:1727
@ PKTLAB_VERIFY_TOO_MANY_CERT
Definition: pktlab.h:1731
struct pktlab_publickey * pktlab_get_publickey_from_privatekey(const struct pktlab_privatekey *k)
Get loaded pktlab public key struct from loaded pktlab private key struct.
static void pktlab_set8(void *ptr, uint_fast8_t val)
Set 8-bit unsigned integer to byte array.
Definition: pktlab.h:2043
Structure for encoding/decoding experiment descriptor (xdescr)/endpoint attribute (dattr) in xpub and...
Definition: pktlab.h:170
Structure for encoding/decoding channel lists in xpub and xsub messages.
Definition: pktlab.h:274
Structure for storing decoded pktlab URI information.
Definition: pktlab.h:359
struct pktlab_uri::@0::@2 malformed
struct pktlab_uri::@0::@3 uri
enum pktlab_uri_type type
Definition: pktlab.h:360
Structure for storing the decoded form of pktlab messages.
Definition: pktlab.h:790
Structure for storing decoded pktlab certificate information.
Definition: pktlab.h:1527
pktlab reader opaque struct.
pktlab writer opaque struct.
pktlab public key opaque struct.
pktlab private key opaque struct.
pktlab certificate opaque struct.