diff --git a/net/api/net.pb.go b/net/api/net.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..6c617e3044b22031991d61809481ae3a42efd359
--- /dev/null
+++ b/net/api/net.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: github.com/bio-routing/bio-rd/net/api/net.proto
+
+/*
+Package api is a generated protocol buffer package.
+
+It is generated from these files:
+	github.com/bio-routing/bio-rd/net/api/net.proto
+
+It has these top-level messages:
+	Prefix
+	IP
+*/
+package api
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type Prefix struct {
+	Address *IP    `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+	Pfxlen  uint32 `protobuf:"varint,2,opt,name=pfxlen" json:"pfxlen,omitempty"`
+}
+
+func (m *Prefix) Reset()                    { *m = Prefix{} }
+func (m *Prefix) String() string            { return proto.CompactTextString(m) }
+func (*Prefix) ProtoMessage()               {}
+func (*Prefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *Prefix) GetAddress() *IP {
+	if m != nil {
+		return m.Address
+	}
+	return nil
+}
+
+func (m *Prefix) GetPfxlen() uint32 {
+	if m != nil {
+		return m.Pfxlen
+	}
+	return 0
+}
+
+type IP struct {
+	Higher   uint64 `protobuf:"varint,1,opt,name=higher" json:"higher,omitempty"`
+	Lower    uint64 `protobuf:"varint,2,opt,name=lower" json:"lower,omitempty"`
+	IsLegacy bool   `protobuf:"varint,3,opt,name=is_legacy,json=isLegacy" json:"is_legacy,omitempty"`
+}
+
+func (m *IP) Reset()                    { *m = IP{} }
+func (m *IP) String() string            { return proto.CompactTextString(m) }
+func (*IP) ProtoMessage()               {}
+func (*IP) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *IP) GetHigher() uint64 {
+	if m != nil {
+		return m.Higher
+	}
+	return 0
+}
+
+func (m *IP) GetLower() uint64 {
+	if m != nil {
+		return m.Lower
+	}
+	return 0
+}
+
+func (m *IP) GetIsLegacy() bool {
+	if m != nil {
+		return m.IsLegacy
+	}
+	return false
+}
+
+func init() {
+	proto.RegisterType((*Prefix)(nil), "api.Prefix")
+	proto.RegisterType((*IP)(nil), "api.IP")
+}
+
+func init() { proto.RegisterFile("github.com/bio-routing/bio-rd/net/api/net.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 193 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0xce, 0xc1, 0x6a, 0x84, 0x30,
+	0x10, 0x06, 0x60, 0xa2, 0x56, 0x6d, 0x4a, 0x2f, 0xa1, 0x14, 0xa1, 0x17, 0xeb, 0xc9, 0x4b, 0x13,
+	0x68, 0x1f, 0xa1, 0x27, 0xa1, 0x50, 0xc9, 0x0b, 0x94, 0xa8, 0x31, 0x0e, 0x58, 0x13, 0x92, 0xc8,
+	0xba, 0x6f, 0xbf, 0x18, 0xdd, 0xd3, 0xcc, 0x37, 0xc3, 0x0f, 0x3f, 0x66, 0x0a, 0xfc, 0xb4, 0x76,
+	0xb4, 0xd7, 0xff, 0xac, 0x03, 0xfd, 0x61, 0xf5, 0xea, 0x61, 0x51, 0xc7, 0x3e, 0xb0, 0x45, 0x7a,
+	0x26, 0x0c, 0xec, 0x93, 0x1a, 0xab, 0xbd, 0x26, 0xb1, 0x30, 0x50, 0x7d, 0xe3, 0xb4, 0xb5, 0x72,
+	0x84, 0x8d, 0xbc, 0xe3, 0x4c, 0x0c, 0x83, 0x95, 0xce, 0x15, 0xa8, 0x44, 0xf5, 0xd3, 0x67, 0x46,
+	0x85, 0x01, 0xda, 0xb4, 0xfc, 0x7e, 0x27, 0xaf, 0x38, 0x35, 0xe3, 0x36, 0xcb, 0xa5, 0x88, 0x4a,
+	0x54, 0x3f, 0xf3, 0x53, 0xd5, 0x2f, 0x8e, 0x9a, 0x76, 0xff, 0x4e, 0xa0, 0x26, 0x69, 0x43, 0x3e,
+	0xe1, 0xa7, 0xc8, 0x0b, 0x7e, 0x98, 0xf5, 0x45, 0xda, 0x10, 0x4a, 0xf8, 0x01, 0xf2, 0x86, 0x1f,
+	0xc1, 0xfd, 0xcd, 0x52, 0x89, 0xfe, 0x5a, 0xc4, 0x25, 0xaa, 0x73, 0x9e, 0x83, 0xfb, 0x09, 0xee,
+	0xd2, 0xd0, 0xf0, 0xeb, 0x16, 0x00, 0x00, 0xff, 0xff, 0x19, 0xac, 0x48, 0x5d, 0xd4, 0x00, 0x00,
+	0x00,
+}
diff --git a/net/api/net.proto b/net/api/net.proto
new file mode 100644
index 0000000000000000000000000000000000000000..f7abc0a18f819bf79128a2414becec5a3dfa070c
--- /dev/null
+++ b/net/api/net.proto
@@ -0,0 +1,14 @@
+syntax = "proto3";
+
+package api;
+
+message Prefix {
+    IP address = 1;
+    uint32 pfxlen = 2;
+}
+
+message IP {
+    uint64 higher = 1;
+    uint64 lower = 2;
+    bool is_legacy = 3;
+}
\ No newline at end of file