@@ -869,7 +869,7 @@ static void close_connection(HTTPContext *c) | |||||
if (!c->last_packet_sent && c->state == HTTPSTATE_SEND_DATA_TRAILER) { | if (!c->last_packet_sent && c->state == HTTPSTATE_SEND_DATA_TRAILER) { | ||||
if (ctx->oformat) { | if (ctx->oformat) { | ||||
/* prepare header */ | /* prepare header */ | ||||
if (url_open_dyn_buf(&ctx->pb) >= 0) { | |||||
if (avio_open_dyn_buf(&ctx->pb) >= 0) { | |||||
av_write_trailer(ctx); | av_write_trailer(ctx); | ||||
av_freep(&c->pb_buffer); | av_freep(&c->pb_buffer); | ||||
url_close_dyn_buf(ctx->pb, &c->pb_buffer); | url_close_dyn_buf(ctx->pb, &c->pb_buffer); | ||||
@@ -1873,7 +1873,7 @@ static void compute_status(HTTPContext *c) | |||||
int i, len; | int i, len; | ||||
AVIOContext *pb; | AVIOContext *pb; | ||||
if (url_open_dyn_buf(&pb) < 0) { | |||||
if (avio_open_dyn_buf(&pb) < 0) { | |||||
/* XXX: return an error ? */ | /* XXX: return an error ? */ | ||||
c->buffer_ptr = c->buffer; | c->buffer_ptr = c->buffer; | ||||
c->buffer_end = c->buffer; | c->buffer_end = c->buffer; | ||||
@@ -2256,7 +2256,7 @@ static int http_prepare_data(HTTPContext *c) | |||||
c->got_key_frame = 0; | c->got_key_frame = 0; | ||||
/* prepare header and save header data in a stream */ | /* prepare header and save header data in a stream */ | ||||
if (url_open_dyn_buf(&c->fmt_ctx.pb) < 0) { | |||||
if (avio_open_dyn_buf(&c->fmt_ctx.pb) < 0) { | |||||
/* XXX: potential leak */ | /* XXX: potential leak */ | ||||
return -1; | return -1; | ||||
} | } | ||||
@@ -2391,7 +2391,7 @@ static int http_prepare_data(HTTPContext *c) | |||||
max_packet_size = url_get_max_packet_size(c->rtp_handles[c->packet_stream_index]); | max_packet_size = url_get_max_packet_size(c->rtp_handles[c->packet_stream_index]); | ||||
ret = url_open_dyn_packet_buf(&ctx->pb, max_packet_size); | ret = url_open_dyn_packet_buf(&ctx->pb, max_packet_size); | ||||
} else { | } else { | ||||
ret = url_open_dyn_buf(&ctx->pb); | |||||
ret = avio_open_dyn_buf(&ctx->pb); | |||||
} | } | ||||
if (ret < 0) { | if (ret < 0) { | ||||
/* XXX: potential leak */ | /* XXX: potential leak */ | ||||
@@ -2432,7 +2432,7 @@ static int http_prepare_data(HTTPContext *c) | |||||
return -1; | return -1; | ||||
ctx = &c->fmt_ctx; | ctx = &c->fmt_ctx; | ||||
/* prepare header */ | /* prepare header */ | ||||
if (url_open_dyn_buf(&ctx->pb) < 0) { | |||||
if (avio_open_dyn_buf(&ctx->pb) < 0) { | |||||
/* XXX: potential leak */ | /* XXX: potential leak */ | ||||
return -1; | return -1; | ||||
} | } | ||||
@@ -2503,7 +2503,7 @@ static int http_send_data(HTTPContext *c) | |||||
/* if already sending something, then wait. */ | /* if already sending something, then wait. */ | ||||
if (rtsp_c->state != RTSPSTATE_WAIT_REQUEST) | if (rtsp_c->state != RTSPSTATE_WAIT_REQUEST) | ||||
break; | break; | ||||
if (url_open_dyn_buf(&pb) < 0) | |||||
if (avio_open_dyn_buf(&pb) < 0) | |||||
goto fail1; | goto fail1; | ||||
interleaved_index = c->packet_stream_index * 2; | interleaved_index = c->packet_stream_index * 2; | ||||
/* RTCP packets are sent at odd indexes */ | /* RTCP packets are sent at odd indexes */ | ||||
@@ -2850,7 +2850,7 @@ static int rtsp_parse_request(HTTPContext *c) | |||||
av_strlcpy(c->url, url, sizeof(c->url)); | av_strlcpy(c->url, url, sizeof(c->url)); | ||||
av_strlcpy(c->protocol, protocol, sizeof(c->protocol)); | av_strlcpy(c->protocol, protocol, sizeof(c->protocol)); | ||||
if (url_open_dyn_buf(&c->pb) < 0) { | |||||
if (avio_open_dyn_buf(&c->pb) < 0) { | |||||
/* XXX: cannot do more */ | /* XXX: cannot do more */ | ||||
c->pb = NULL; /* safety */ | c->pb = NULL; /* safety */ | ||||
return -1; | return -1; | ||||
@@ -234,7 +234,7 @@ static void put_str16(AVIOContext *s, const char *tag) | |||||
int len; | int len; | ||||
uint8_t *pb; | uint8_t *pb; | ||||
AVIOContext *dyn_buf; | AVIOContext *dyn_buf; | ||||
if (url_open_dyn_buf(&dyn_buf) < 0) | |||||
if (avio_open_dyn_buf(&dyn_buf) < 0) | |||||
return; | return; | ||||
avio_put_str16le(dyn_buf, tag); | avio_put_str16le(dyn_buf, tag); | ||||
@@ -366,7 +366,7 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size, int64_t data | |||||
uint8_t *buf; | uint8_t *buf; | ||||
AVIOContext *dyn_buf; | AVIOContext *dyn_buf; | ||||
if (url_open_dyn_buf(&dyn_buf) < 0) | |||||
if (avio_open_dyn_buf(&dyn_buf) < 0) | |||||
return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
hpos = put_header(pb, &ff_asf_comment_header); | hpos = put_header(pb, &ff_asf_comment_header); | ||||
@@ -497,7 +497,7 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size, int64_t data | |||||
else | else | ||||
desc = p ? p->name : enc->codec_name; | desc = p ? p->name : enc->codec_name; | ||||
if ( url_open_dyn_buf(&dyn_buf) < 0) | |||||
if ( avio_open_dyn_buf(&dyn_buf) < 0) | |||||
return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
avio_put_str16le(dyn_buf, desc); | avio_put_str16le(dyn_buf, desc); | ||||
@@ -89,7 +89,7 @@ int ff_avc_parse_nal_units(AVIOContext *pb, const uint8_t *buf_in, int size) | |||||
int ff_avc_parse_nal_units_buf(const uint8_t *buf_in, uint8_t **buf, int *size) | int ff_avc_parse_nal_units_buf(const uint8_t *buf_in, uint8_t **buf, int *size) | ||||
{ | { | ||||
AVIOContext *pb; | AVIOContext *pb; | ||||
int ret = url_open_dyn_buf(&pb); | |||||
int ret = avio_open_dyn_buf(&pb); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
@@ -447,6 +447,7 @@ attribute_deprecated int url_fprintf(AVIOContext *s, const char *fmt, ...) __att | |||||
attribute_deprecated int url_fprintf(AVIOContext *s, const char *fmt, ...); | attribute_deprecated int url_fprintf(AVIOContext *s, const char *fmt, ...); | ||||
#endif | #endif | ||||
attribute_deprecated void put_flush_packet(AVIOContext *s); | attribute_deprecated void put_flush_packet(AVIOContext *s); | ||||
attribute_deprecated int url_open_dyn_buf(AVIOContext **s); | |||||
/** | /** | ||||
* @} | * @} | ||||
*/ | */ | ||||
@@ -680,7 +681,7 @@ attribute_deprecated int url_close_buf(AVIOContext *s); | |||||
* @param s new IO context | * @param s new IO context | ||||
* @return zero if no error. | * @return zero if no error. | ||||
*/ | */ | ||||
int url_open_dyn_buf(AVIOContext **s); | |||||
int avio_open_dyn_buf(AVIOContext **s); | |||||
/** | /** | ||||
* Open a write only packetized memory stream with a maximum packet | * Open a write only packetized memory stream with a maximum packet | ||||
@@ -696,7 +697,7 @@ int url_open_dyn_packet_buf(AVIOContext **s, int max_packet_size); | |||||
/** | /** | ||||
* Return the written size and a pointer to the buffer. The buffer | * Return the written size and a pointer to the buffer. The buffer | ||||
* must be freed with av_free(). If the buffer is opened with | * must be freed with av_free(). If the buffer is opened with | ||||
* url_open_dyn_buf, then padding of FF_INPUT_BUFFER_PADDING_SIZE is | |||||
* avio_open_dyn_buf, then padding of FF_INPUT_BUFFER_PADDING_SIZE is | |||||
* added; if opened with url_open_dyn_packet_buf, no padding is added. | * added; if opened with url_open_dyn_packet_buf, no padding is added. | ||||
* | * | ||||
* @param s IO context | * @param s IO context | ||||
@@ -419,6 +419,10 @@ unsigned long get_checksum(AVIOContext *s) | |||||
{ | { | ||||
return ffio_get_checksum(s); | return ffio_get_checksum(s); | ||||
} | } | ||||
int url_open_dyn_buf(AVIOContext **s) | |||||
{ | |||||
return avio_open_dyn_buf(s); | |||||
} | |||||
#endif | #endif | ||||
int avio_put_str(AVIOContext *s, const char *str) | int avio_put_str(AVIOContext *s, const char *str) | ||||
@@ -1023,7 +1027,7 @@ int64_t ffio_read_seek(AVIOContext *s, int stream_index, | |||||
return ret; | return ret; | ||||
} | } | ||||
/* url_open_dyn_buf and url_close_dyn_buf are used in rtp.c to send a response | |||||
/* avio_open_dyn_buf and url_close_dyn_buf are used in rtp.c to send a response | |||||
* back to the server even if CONFIG_MUXERS is false. */ | * back to the server even if CONFIG_MUXERS is false. */ | ||||
#if CONFIG_MUXERS || CONFIG_NETWORK | #if CONFIG_MUXERS || CONFIG_NETWORK | ||||
/* buffer handling */ | /* buffer handling */ | ||||
@@ -1147,7 +1151,7 @@ static int url_open_dyn_buf_internal(AVIOContext **s, int max_packet_size) | |||||
return ret; | return ret; | ||||
} | } | ||||
int url_open_dyn_buf(AVIOContext **s) | |||||
int avio_open_dyn_buf(AVIOContext **s) | |||||
{ | { | ||||
return url_open_dyn_buf_internal(s, 0); | return url_open_dyn_buf_internal(s, 0); | ||||
} | } | ||||
@@ -455,7 +455,7 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo | |||||
uint8_t *codecpriv; | uint8_t *codecpriv; | ||||
int ret, codecpriv_size; | int ret, codecpriv_size; | ||||
ret = url_open_dyn_buf(&dyn_cp); | |||||
ret = avio_open_dyn_buf(&dyn_cp); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
@@ -1026,7 +1026,7 @@ static int mkv_write_packet_internal(AVFormatContext *s, AVPacket *pkt) | |||||
if (!s->pb->seekable) { | if (!s->pb->seekable) { | ||||
if (!mkv->dyn_bc) | if (!mkv->dyn_bc) | ||||
url_open_dyn_buf(&mkv->dyn_bc); | |||||
avio_open_dyn_buf(&mkv->dyn_bc); | |||||
pb = mkv->dyn_bc; | pb = mkv->dyn_bc; | ||||
} | } | ||||
@@ -1660,7 +1660,7 @@ static int mov_write_udta_tag(AVIOContext *pb, MOVMuxContext *mov, | |||||
return 0; | return 0; | ||||
} | } | ||||
ret = url_open_dyn_buf(&pb_buf); | |||||
ret = avio_open_dyn_buf(&pb_buf); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
@@ -417,7 +417,7 @@ int ff_mov_add_hinted_packet(AVFormatContext *s, AVPacket *pkt, | |||||
goto done; | goto done; | ||||
/* Open a buffer for writing the hint */ | /* Open a buffer for writing the hint */ | ||||
if ((ret = url_open_dyn_buf(&hintbuf)) < 0) | |||||
if ((ret = avio_open_dyn_buf(&hintbuf)) < 0) | |||||
goto done; | goto done; | ||||
av_init_packet(&hint_pkt); | av_init_packet(&hint_pkt); | ||||
count = write_hint_packets(hintbuf, buf, size, trk, &hint_pkt.dts); | count = write_hint_packets(hintbuf, buf, size, trk, &hint_pkt.dts); | ||||
@@ -96,7 +96,7 @@ static int id3v2_put_ttag(AVFormatContext *s, const char *str1, const char *str2 | |||||
uint8_t *pb; | uint8_t *pb; | ||||
int (*put)(AVIOContext*, const char*); | int (*put)(AVIOContext*, const char*); | ||||
AVIOContext *dyn_buf; | AVIOContext *dyn_buf; | ||||
if (url_open_dyn_buf(&dyn_buf) < 0) | |||||
if (avio_open_dyn_buf(&dyn_buf) < 0) | |||||
return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
/* check if the strings are ASCII-only and use UTF16 only if | /* check if the strings are ASCII-only and use UTF16 only if | ||||
@@ -436,7 +436,7 @@ static int write_globalinfo(NUTContext *nut, AVIOContext *bc){ | |||||
AVIOContext *dyn_bc; | AVIOContext *dyn_bc; | ||||
uint8_t *dyn_buf=NULL; | uint8_t *dyn_buf=NULL; | ||||
int count=0, dyn_size; | int count=0, dyn_size; | ||||
int ret = url_open_dyn_buf(&dyn_bc); | |||||
int ret = avio_open_dyn_buf(&dyn_bc); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
@@ -462,7 +462,7 @@ static int write_streaminfo(NUTContext *nut, AVIOContext *bc, int stream_id){ | |||||
AVIOContext *dyn_bc; | AVIOContext *dyn_bc; | ||||
uint8_t *dyn_buf=NULL; | uint8_t *dyn_buf=NULL; | ||||
int count=0, dyn_size, i; | int count=0, dyn_size, i; | ||||
int ret = url_open_dyn_buf(&dyn_bc); | |||||
int ret = avio_open_dyn_buf(&dyn_bc); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
@@ -495,7 +495,7 @@ static int write_chapter(NUTContext *nut, AVIOContext *bc, int id) | |||||
AVChapter *ch = nut->avf->chapters[id]; | AVChapter *ch = nut->avf->chapters[id]; | ||||
int ret, dyn_size, count = 0; | int ret, dyn_size, count = 0; | ||||
ret = url_open_dyn_buf(&dyn_bc); | |||||
ret = avio_open_dyn_buf(&dyn_bc); | |||||
if (ret < 0) | if (ret < 0) | ||||
return ret; | return ret; | ||||
@@ -522,14 +522,14 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc){ | |||||
ff_metadata_conv_ctx(avctx, ff_nut_metadata_conv, NULL); | ff_metadata_conv_ctx(avctx, ff_nut_metadata_conv, NULL); | ||||
ret = url_open_dyn_buf(&dyn_bc); | |||||
ret = avio_open_dyn_buf(&dyn_bc); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
write_mainheader(nut, dyn_bc); | write_mainheader(nut, dyn_bc); | ||||
put_packet(nut, bc, dyn_bc, 1, MAIN_STARTCODE); | put_packet(nut, bc, dyn_bc, 1, MAIN_STARTCODE); | ||||
for (i=0; i < nut->avf->nb_streams; i++){ | for (i=0; i < nut->avf->nb_streams; i++){ | ||||
ret = url_open_dyn_buf(&dyn_bc); | |||||
ret = avio_open_dyn_buf(&dyn_bc); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
if ((ret = write_streamheader(avctx, dyn_bc, nut->avf->streams[i], i)) < 0) | if ((ret = write_streamheader(avctx, dyn_bc, nut->avf->streams[i], i)) < 0) | ||||
@@ -537,14 +537,14 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc){ | |||||
put_packet(nut, bc, dyn_bc, 1, STREAM_STARTCODE); | put_packet(nut, bc, dyn_bc, 1, STREAM_STARTCODE); | ||||
} | } | ||||
ret = url_open_dyn_buf(&dyn_bc); | |||||
ret = avio_open_dyn_buf(&dyn_bc); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
write_globalinfo(nut, dyn_bc); | write_globalinfo(nut, dyn_bc); | ||||
put_packet(nut, bc, dyn_bc, 1, INFO_STARTCODE); | put_packet(nut, bc, dyn_bc, 1, INFO_STARTCODE); | ||||
for (i = 0; i < nut->avf->nb_streams; i++) { | for (i = 0; i < nut->avf->nb_streams; i++) { | ||||
ret = url_open_dyn_buf(&dyn_bc); | |||||
ret = avio_open_dyn_buf(&dyn_bc); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
ret = write_streaminfo(nut, dyn_bc, i); | ret = write_streaminfo(nut, dyn_bc, i); | ||||
@@ -560,7 +560,7 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc){ | |||||
} | } | ||||
for (i = 0; i < nut->avf->nb_chapters; i++) { | for (i = 0; i < nut->avf->nb_chapters; i++) { | ||||
ret = url_open_dyn_buf(&dyn_bc); | |||||
ret = avio_open_dyn_buf(&dyn_bc); | |||||
if (ret < 0) | if (ret < 0) | ||||
return ret; | return ret; | ||||
ret = write_chapter(nut, dyn_bc, i); | ret = write_chapter(nut, dyn_bc, i); | ||||
@@ -728,7 +728,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt){ | |||||
NULL); | NULL); | ||||
nut->last_syncpoint_pos= avio_tell(bc); | nut->last_syncpoint_pos= avio_tell(bc); | ||||
ret = url_open_dyn_buf(&dyn_bc); | |||||
ret = avio_open_dyn_buf(&dyn_bc); | |||||
if(ret < 0) | if(ret < 0) | ||||
return ret; | return ret; | ||||
put_tt(nut, nus->time_base, dyn_bc, pkt->dts); | put_tt(nut, nus->time_base, dyn_bc, pkt->dts); | ||||
@@ -82,7 +82,7 @@ static int ogg_write_page(AVFormatContext *s, OGGPage *page, int extra_flags) | |||||
int ret, size; | int ret, size; | ||||
uint8_t *buf; | uint8_t *buf; | ||||
ret = url_open_dyn_buf(&pb); | |||||
ret = avio_open_dyn_buf(&pb); | |||||
if (ret < 0) | if (ret < 0) | ||||
return ret; | return ret; | ||||
ffio_init_checksum(pb, ff_crc04C11DB7_update, 0); | ffio_init_checksum(pb, ff_crc04C11DB7_update, 0); | ||||
@@ -264,7 +264,7 @@ int rtp_check_and_send_back_rr(RTPDemuxContext *s, int count) | |||||
return -1; | return -1; | ||||
s->last_octet_count = s->octet_count; | s->last_octet_count = s->octet_count; | ||||
if (url_open_dyn_buf(&pb) < 0) | |||||
if (avio_open_dyn_buf(&pb) < 0) | |||||
return -1; | return -1; | ||||
// Receiver Report | // Receiver Report | ||||
@@ -339,7 +339,7 @@ void rtp_send_punch_packets(URLContext* rtp_handle) | |||||
int len; | int len; | ||||
/* Send a small RTP packet */ | /* Send a small RTP packet */ | ||||
if (url_open_dyn_buf(&pb) < 0) | |||||
if (avio_open_dyn_buf(&pb) < 0) | |||||
return; | return; | ||||
avio_w8(pb, (RTP_VERSION << 6)); | avio_w8(pb, (RTP_VERSION << 6)); | ||||
@@ -355,7 +355,7 @@ void rtp_send_punch_packets(URLContext* rtp_handle) | |||||
av_free(buf); | av_free(buf); | ||||
/* Send a minimal RTCP RR */ | /* Send a minimal RTCP RR */ | ||||
if (url_open_dyn_buf(&pb) < 0) | |||||
if (avio_open_dyn_buf(&pb) < 0) | |||||
return; | return; | ||||
avio_w8(pb, (RTP_VERSION << 6)); | avio_w8(pb, (RTP_VERSION << 6)); | ||||
@@ -208,7 +208,7 @@ static int asfrtp_parse_packet(AVFormatContext *s, PayloadContext *asf, | |||||
av_free(p); | av_free(p); | ||||
} | } | ||||
if (!len_off && !asf->pktbuf && | if (!len_off && !asf->pktbuf && | ||||
(res = url_open_dyn_buf(&asf->pktbuf)) < 0) | |||||
(res = avio_open_dyn_buf(&asf->pktbuf)) < 0) | |||||
return res; | return res; | ||||
if (!asf->pktbuf) | if (!asf->pktbuf) | ||||
return AVERROR(EIO); | return AVERROR(EIO); | ||||
@@ -65,7 +65,7 @@ static int latm_parse_packet(AVFormatContext *ctx, PayloadContext *data, | |||||
av_freep(&data->buf); | av_freep(&data->buf); | ||||
data->timestamp = *timestamp; | data->timestamp = *timestamp; | ||||
if ((ret = url_open_dyn_buf(&data->dyn_buf)) < 0) | |||||
if ((ret = avio_open_dyn_buf(&data->dyn_buf)) < 0) | |||||
return ret; | return ret; | ||||
} | } | ||||
avio_write(data->dyn_buf, buf, len); | avio_write(data->dyn_buf, buf, len); | ||||
@@ -86,7 +86,7 @@ static int svq3_parse_packet (AVFormatContext *s, PayloadContext *sv, | |||||
url_close_dyn_buf(sv->pktbuf, &tmp); | url_close_dyn_buf(sv->pktbuf, &tmp); | ||||
av_free(tmp); | av_free(tmp); | ||||
} | } | ||||
if ((res = url_open_dyn_buf(&sv->pktbuf)) < 0) | |||||
if ((res = avio_open_dyn_buf(&sv->pktbuf)) < 0) | |||||
return res; | return res; | ||||
sv->timestamp = *timestamp; | sv->timestamp = *timestamp; | ||||
} | } | ||||
@@ -85,7 +85,7 @@ static int vp8_handle_packet(AVFormatContext *ctx, | |||||
// that for the next av_get_packet call | // that for the next av_get_packet call | ||||
ret = end_packet ? 1 : 0; | ret = end_packet ? 1 : 0; | ||||
} | } | ||||
if ((res = url_open_dyn_buf(&vp8->data)) < 0) | |||||
if ((res = avio_open_dyn_buf(&vp8->data)) < 0) | |||||
return res; | return res; | ||||
vp8->is_keyframe = *buf & 1; | vp8->is_keyframe = *buf & 1; | ||||
vp8->timestamp = ts; | vp8->timestamp = ts; | ||||
@@ -176,7 +176,7 @@ static int xiph_handle_packet(AVFormatContext * ctx, | |||||
// end packet has been lost somewhere, so drop buffered data | // end packet has been lost somewhere, so drop buffered data | ||||
free_fragment_if_needed(data); | free_fragment_if_needed(data); | ||||
if((res = url_open_dyn_buf(&data->fragment)) < 0) | |||||
if((res = avio_open_dyn_buf(&data->fragment)) < 0) | |||||
return res; | return res; | ||||
avio_write(data->fragment, buf, pkt_len); | avio_write(data->fragment, buf, pkt_len); | ||||