diff --git a/include/patty/ax25/frame.h b/include/patty/ax25/frame.h index b9eac05..d9af35b 100644 --- a/include/patty/ax25/frame.h +++ b/include/patty/ax25/frame.h @@ -42,4 +42,6 @@ typedef struct _patty_ax25_frame { int patty_ax25_frame_decode(patty_ax25_frame *frame, void *data, size_t len); +int patty_ax25_frame_payload(patty_ax25_frame *frame, void **data, size_t *len); + #endif /* _PATTY_AX25_FRAME_H */ diff --git a/src/frame.c b/src/frame.c index 13e1ea6..3deb05a 100644 --- a/src/frame.c +++ b/src/frame.c @@ -248,3 +248,19 @@ int patty_ax25_frame_decode(patty_ax25_frame *frame, void *data, size_t size) { error_decode: return -1; } + +int patty_ax25_frame_payload(patty_ax25_frame *frame, void **data, size_t *len) { + if (frame == NULL || frame->payload == NULL || data == NULL || len == NULL) { + errno = EINVAL; + + goto error_invalid_args; + } + + *data = frame->payload; + *len = frame->payloadsz; + + return 0; + +error_invalid_args: + return -1; +}