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);