Skip to content

Instantly share code, notes, and snippets.

View pallas's full-sized avatar

Derrick Lyndon Pallas pallas

View GitHub Profile
@pallas
pallas / mac_to_ipv6network.py
Created August 9, 2019 23:12
Inject MAC address into IPv6 Network
# SPDX-License-Identifier: Unlicense
from ipaddress import IPv6Network
from binascii import unhexlify
network = IPv6Network("2001:DB8::/32")
mac = "12:34:56:78:9a:bc"
mac_bytes = b''.join(map(unhexlify, mac.split(':')))
address = network[int.from_bytes(mac_bytes, byteorder='big')]
print(network, mac, mac_bytes, address)
#!/bin/bash
# Author: Derrick Pallas
# License: zlib
BASE='dblock-set'
TEMP=${BASE}$$
ipset create -exist "$BASE" hash:ip --netmask 24 || exit 1
iptables -nL INPUT | grep -q "$BASE" ||
(
( iptables -N "$BASE" || iptables -F "$BASE" ) &&
#!/bin/bash
# Author: Derrick Pallas
# License: zlib
BASE='feodo-set'
TEMP=${BASE}$$
ipset create -exist "$BASE" hash:ip --netmask 32 || exit 1
iptables -nL INPUT | grep -q "$BASE" ||
(
( iptables -N "$BASE" || iptables -F "$BASE" ) &&
@pallas
pallas / gdb-bt.sh
Last active July 15, 2020 20:40
GDB wrapper to produce backtrace automatically
#!/bin/bash
# SPDX-License-Identifier: Unlicense
# Author: Derrick Lyndon Pallas <derrick@pallas.us>
[ $# -gt 0 ] &&
exec gdb "$1" --return-child-result --silent --batch \
--ex "run $([ $# -gt 1 ] && printf '%q ' "${@:2}")" \
--ex bt \
2>/dev/null
#
@pallas
pallas / courier-pem.mk
Created January 14, 2017 21:40
Will regenerate courier.pem & restart mail daemons when Let's Encrypt certificate renews.
BASE?=/etc/letsencrypt
DOMAIN?=mx.example.com
DHBITS:=4096
LIVE:=$(BASE)/live/$(DOMAIN)
PRIVKEY:=$(LIVE)/privkey.pem
FULLCHAIN:=$(LIVE)/fullchain.pem
.PHONY: default
@pallas
pallas / try.hh
Created November 21, 2016 00:52
C++ macros for trying libc calls, throwing std::runtime_error on errno
#ifndef TRY_H
#define TRY_H
#include <cstdio>
#include <cstring>
#include <stdexcept>
#include <errno.h>
#define TRY(f, ...) ({ \
@pallas
pallas / magic_mask.h
Created July 19, 2015 20:54
C++ template to generate a magic mask with alternating runs of 0s & 1s
#include <cstdint>
template <typename T>
inline T magic_mask(int_fast8_t n) {
T base = T(1)<<(int_fast16_t(1)<<n);
return (~T(0))/(base*base-1)*(base-1);
}
@pallas
pallas / keybase.md
Last active May 7, 2020 19:30
Keybase proof

Keybase proof

I hereby claim:

  • I am pallas on github.
  • I am pallas (https://keybase.io/pallas) on keybase.
  • I have a public key ASCsQ6NtBDpKhw9f2MArRunk8lTLxLjfIFaFVpzO79Pqtwo

To claim this, I am signing this object:

@pallas
pallas / intrusive_tree.hh
Last active October 29, 2022 18:26
C++ intrusive red-black tree
// All rights reserved,
// Derrick Pallas
// License: zlib
#ifndef INTRUSIVE_TREE_H
#define INTRUSIVE_TREE_H
#include <cassert>
#include <cstddef>
#include <algorithm>
@pallas
pallas / intrusive_order.hh
Last active August 29, 2015 13:58
C++ intrusive ordered queue + fast tail inserts
// All rights reserved,
// Derrick Pallas
// License: zlib
#ifndef INTRUSIVE_ORDER_H
#define INTRUSIVE_ORDER_H
#include <cassert>
#include <cstddef>
#include <algorithm>