1 // SPDX-License-Identifier: GPL-2.0
3 #include "slip_common.h"
6 int slip_proto_read(int fd
, void *buf
, int len
, struct slip_proto
*slip
)
12 while(i
< slip
->more
){
13 size
= slip_unesc(slip
->ibuf
[i
++], slip
->ibuf
,
14 &slip
->pos
, &slip
->esc
);
16 memcpy(buf
, slip
->ibuf
, size
);
17 memmove(slip
->ibuf
, &slip
->ibuf
[i
],
19 slip
->more
= slip
->more
- i
;
26 n
= net_read(fd
, &slip
->ibuf
[slip
->pos
],
27 sizeof(slip
->ibuf
) - slip
->pos
);
32 for(i
= 0; i
< n
; i
++){
33 size
= slip_unesc(slip
->ibuf
[start
+ i
], slip
->ibuf
,&slip
->pos
,
36 memcpy(buf
, slip
->ibuf
, size
);
37 memmove(slip
->ibuf
, &slip
->ibuf
[start
+i
+1],
39 slip
->more
= n
- (i
+ 1);
46 int slip_proto_write(int fd
, void *buf
, int len
, struct slip_proto
*slip
)
50 actual
= slip_esc(buf
, slip
->obuf
, len
);
51 n
= net_write(fd
, slip
->obuf
, actual
);