ASSERT(ad_start >= buf->data && ad_start <= BPTR(buf));
- ASSERT(buf_init(&work, FRAME_HEADROOM_ADJ(frame, FRAME_HEADROOM_MARKER_DECRYPT)));
+ ASSERT(buf_init(&work, FRAME_HEADROOM(frame)));
/* IV and Packet ID required for this mode */
ASSERT(packet_id_initialized(&opt->packet_id));
int outlen;
/* initialize work buffer with FRAME_HEADROOM bytes of prepend capacity */
- ASSERT(buf_init(&work, FRAME_HEADROOM_ADJ(frame, FRAME_HEADROOM_MARKER_DECRYPT)));
+ ASSERT(buf_init(&work, FRAME_HEADROOM(frame)));
/* read the IV from the packet */
if (buf->len < iv_size)
perf_push(PERF_READ_IN_LINK);
c->c2.buf = c->c2.buffers->read_link_buf;
- ASSERT(buf_init(&c->c2.buf, FRAME_HEADROOM_ADJ(&c->c2.frame, FRAME_HEADROOM_MARKER_READ_LINK)));
+ ASSERT(buf_init(&c->c2.buf, FRAME_HEADROOM(&c->c2.frame)));
status = link_socket_read(c->c2.link_socket,
&c->c2.buf,
frag->defined = true;
frag->max_frag_size = size;
frag->map = 0;
- ASSERT(buf_init(&frag->buf, FRAME_HEADROOM_ADJ(frame, FRAME_HEADROOM_MARKER_FRAGMENT)));
+ ASSERT(buf_init(&frag->buf, FRAME_HEADROOM(frame)));
}
/* copy the data to fragment buffer */
o = &c->options;
}
- /*
- * Set adjustment factor for buffer alignment when no
- * cipher is used.
- */
- if (!cipher_defined(c->c1.ks.key_type.cipher))
- {
- frame_align_to_extra_frame(&c->c2.frame);
- frame_or_align_flags(&c->c2.frame,
- FRAME_HEADROOM_MARKER_FRAGMENT
- |FRAME_HEADROOM_MARKER_READ_LINK
- |FRAME_HEADROOM_MARKER_READ_STREAM);
- }
-
frame_add_to_extra_buffer(&c->c2.frame, PAYLOAD_ALIGN);
frame_finalize(&c->c2.frame,
o->ce.link_mtu_defined,
void
alloc_buf_sock_tun(struct buffer *buf,
const struct frame *frame,
- const bool tuntap_buffer,
- const unsigned int align_mask)
+ const bool tuntap_buffer)
{
/* allocate buffer for overlapped I/O */
*buf = alloc_buf(BUF_SIZE(frame));
- ASSERT(buf_init(buf, FRAME_HEADROOM_ADJ(frame, align_mask)));
+ ASSERT(buf_init(buf, FRAME_HEADROOM(frame)));
buf->len = tuntap_buffer ? MAX_RW_SIZE_TUN(frame) : MAX_RW_SIZE_LINK(frame);
ASSERT(buf_safe(buf, 0));
}
buf_printf(&out, " EB:%d", frame->extra_buffer);
buf_printf(&out, " ET:%d", frame->extra_tun);
buf_printf(&out, " EL:%d", frame->extra_link);
- if (frame->align_flags && frame->align_adjust)
- {
- buf_printf(&out, " AF:%u/%d", frame->align_flags, frame->align_adjust);
- }
buf_printf(&out, " ]");
msg(level, "%s", out.data);
int extra_link; /**< Maximum number of bytes in excess of
* external network interface's MTU that
- * might be read from or written to it. */
-
- /*
- * Alignment control
- */
-#define FRAME_HEADROOM_MARKER_DECRYPT (1<<0)
-#define FRAME_HEADROOM_MARKER_FRAGMENT (1<<1)
-#define FRAME_HEADROOM_MARKER_READ_LINK (1<<2)
-#define FRAME_HEADROOM_MARKER_READ_STREAM (1<<3)
- unsigned int align_flags;
- int align_adjust;
+ * might be read from or written to it.
+ *
+ * Used by peer-id (3) and
+ * socks UDP (10) */
};
/* Forward declarations, to prevent includes */
* Control buffer headroom allocations to allow for efficient prepending.
*/
#define FRAME_HEADROOM_BASE(f) (TUN_LINK_DELTA(f) + (f)->extra_buffer + (f)->extra_link)
-#define FRAME_HEADROOM(f) frame_headroom(f, 0)
-#define FRAME_HEADROOM_ADJ(f, fm) frame_headroom(f, fm)
+#define FRAME_HEADROOM(f) frame_headroom(f)
/*
* Max size of a buffer used to build a packet for output to
*/
void alloc_buf_sock_tun(struct buffer *buf,
const struct frame *frame,
- const bool tuntap_buffer,
- const unsigned int align_mask);
+ const bool tuntap_buffer);
/** Set the --mssfix option. */
void frame_init_mssfix(struct frame *frame, const struct options *options);
* headroom and alignment issues.
*/
static inline int
-frame_headroom(const struct frame *f, const unsigned int flag_mask)
+frame_headroom(const struct frame *f)
{
const int offset = FRAME_HEADROOM_BASE(f);
- const int adjust = (flag_mask & f->align_flags) ? f->align_adjust : 0;
- const int delta = ((PAYLOAD_ALIGN << 24) - (offset + adjust)) & (PAYLOAD_ALIGN - 1);
+ const int delta = ((PAYLOAD_ALIGN << 24) - offset) & (PAYLOAD_ALIGN - 1);
return offset + delta;
}
frame->extra_buffer += increment;
}
-static inline void
-frame_align_to_extra_frame(struct frame *frame)
-{
- frame->align_adjust = frame->extra_frame + frame->extra_link;
-}
-
-static inline void
-frame_or_align_flags(struct frame *frame, const unsigned int flag_mask)
-{
- frame->align_flags |= flag_mask;
-}
-
static inline bool
frame_defined(const struct frame *frame)
{
#else
alloc_buf_sock_tun(&sock->stream_buf_data,
frame,
- false,
- FRAME_HEADROOM_MARKER_READ_STREAM);
+ false);
stream_buf_init(&sock->stream_buf,
&sock->stream_buf_data,
}
/* allocate buffer for overlapped I/O */
- alloc_buf_sock_tun(&o->buf_init, frame, tuntap_buffer, 0);
+ alloc_buf_sock_tun(&o->buf_init, frame, tuntap_buffer);
}
void