* hbytes overwrite VAR START VALUE
* hbytes trimleft VAR removes any leading 0 octets
* hbytes repeat VALUE COUNT => COUNT copies of VALUE
+ * hbytes zeroes COUNT => COUNT zero bytes
+ * hbytes random COUNT => COUNT random bytes
+ * hbytes xor VAR VALUE $VAR (+)= VALUE
*
* hbytes ushort2h LONG => LONG must be <2^16, returns as hex
* hbytes h2ushort HEX => |HEX| must be 2 bytes, returns as ulong
* uint VARNAME/VALUE (VARNAME if ul2bitfields;
* ulong VARNAME/VALUE VALUE if bitfields2ul)
*
+ * hbytes mask-map lookup MAP-VAR ADDRESS [DEFAULT] => DATA
+ * error on missing default or if address too short
+ * hbytes mask-map amend MAP-VAR PREFIX PREFIX-LENGTH DATA
+ * a maskmap MAP is [list [list PREFIX PREFIX-LENGTH DATA]]
+ * sorted first by descending PREFIX-LENGTH and then by PREFIX
+ * each PREFIX is truncated to the shortest number of pairs of
+ * hex digits which can represent it
+ *
* Error codes
*
* HBYTES BLOCKCIPHER CRYPTFAIL CRYPT block cipher mode failed somehow (!)
* ULONG BITCOUNT UNDERRUN bitfields add up to less than 32
* ULONG VALUE NEGATIVE attempt convert -ve integers to ulong
* ULONG VALUE OVERFLOW converted value does not fit in result
+ * TUNTAP IFNAME LENGTH tun/tap interface name too long
+ * TUNTAP MTU OVERRUN tun/tap mtu limited to 2^16 bytes
*
* Refs: HMAC: RFC2104
*/
#include <sys/un.h>
#include <arpa/inet.h>
-#include <tcl.h>
+#include <tcl8.3/tcl.h>
typedef unsigned char Byte;
/* from parse.c */
typedef struct {
- HBytes_Value *hb;
Tcl_Obj *obj, *var;
int copied;
+} Something_Var;
+
+void init_somethingv(Something_Var *sth);
+void fini_somethingv(Tcl_Interp *ip, int rc, Something_Var *sth);
+int pat_somethingv(Tcl_Interp *ip, Tcl_Obj *var,
+ Something_Var *sth, Tcl_ObjType *type);
+
+typedef struct {
+ HBytes_Value *hb;
+ Something_Var sth;
} HBytes_Var;
-void fini_hbv(Tcl_Interp *ip, int rc, HBytes_Var *agg);
+/* from maskmap.c */
+
+typedef struct MaskMap_Value MaskMap_Value;
+
+typedef struct {
+ MaskMap_Value *mm;
+ Something_Var sth;
+} MaskMap_Var;
+
+extern Tcl_ObjType maskmap_type;
/* from chop.c */
/* only do_... functions declared in tables.h */