Lines Matching refs:xdrs
66 xdrmbuf_create(XDR *xdrs, struct mbuf *m, enum xdr_op op) in xdrmbuf_create() argument
70 xdrs->x_op = op; in xdrmbuf_create()
71 xdrs->x_ops = &xdrmbuf_ops; in xdrmbuf_create()
72 xdrs->x_base = (char *) m; in xdrmbuf_create()
75 xdrs->x_private = m; in xdrmbuf_create()
76 xdrs->x_handy = m->m_len; in xdrmbuf_create()
78 xdrs->x_private = m; in xdrmbuf_create()
79 xdrs->x_handy = 0; in xdrmbuf_create()
87 xdrmbuf_putmbuf(XDR *xdrs, struct mbuf *madd) in xdrmbuf_putmbuf() argument
96 m = (struct mbuf *) xdrs->x_private; in xdrmbuf_putmbuf()
100 xdrs->x_private = m; in xdrmbuf_putmbuf()
101 xdrs->x_handy = m->m_len; in xdrmbuf_putmbuf()
107 xdrmbuf_getall(XDR *xdrs) in xdrmbuf_getall() argument
111 KASSERT(xdrs->x_ops == &xdrmbuf_ops && xdrs->x_op == XDR_DECODE, in xdrmbuf_getall()
114 m0 = (struct mbuf *) xdrs->x_base; in xdrmbuf_getall()
115 m = (struct mbuf *) xdrs->x_private; in xdrmbuf_getall()
120 xdrs->x_private = NULL; in xdrmbuf_getall()
122 xdrs->x_base = NULL; in xdrmbuf_getall()
123 xdrs->x_private = NULL; in xdrmbuf_getall()
127 m_adj(m, xdrs->x_handy); in xdrmbuf_getall()
134 xdrmbuf_destroy(XDR *xdrs) in xdrmbuf_destroy() argument
137 if (xdrs->x_op == XDR_DECODE && xdrs->x_base) { in xdrmbuf_destroy()
138 m_freem((struct mbuf *) xdrs->x_base); in xdrmbuf_destroy()
139 xdrs->x_base = NULL; in xdrmbuf_destroy()
140 xdrs->x_private = NULL; in xdrmbuf_destroy()
145 xdrmbuf_getlong(XDR *xdrs, long *lp) in xdrmbuf_getlong() argument
150 p = xdrmbuf_inline(xdrs, sizeof(int32_t)); in xdrmbuf_getlong()
154 xdrmbuf_getbytes(xdrs, (char *) &t, sizeof(int32_t)); in xdrmbuf_getlong()
162 xdrmbuf_putlong(XDR *xdrs, const long *lp) in xdrmbuf_putlong() argument
167 p = xdrmbuf_inline(xdrs, sizeof(int32_t)); in xdrmbuf_putlong()
172 return (xdrmbuf_putbytes(xdrs, (char *) &t, sizeof(int32_t))); in xdrmbuf_putlong()
177 xdrmbuf_getbytes(XDR *xdrs, char *addr, u_int len) in xdrmbuf_getbytes() argument
179 struct mbuf *m = (struct mbuf *) xdrs->x_private; in xdrmbuf_getbytes()
193 sz = m->m_len - xdrs->x_handy; in xdrmbuf_getbytes()
196 bcopy(mtod(m, const char *) + xdrs->x_handy, addr, sz); in xdrmbuf_getbytes()
199 xdrs->x_handy += sz; in xdrmbuf_getbytes()
202 if (xdrs->x_handy == m->m_len) { in xdrmbuf_getbytes()
204 xdrs->x_private = (void *) m; in xdrmbuf_getbytes()
205 xdrs->x_handy = 0; in xdrmbuf_getbytes()
213 xdrmbuf_putbytes(XDR *xdrs, const char *addr, u_int len) in xdrmbuf_putbytes() argument
215 struct mbuf *m = (struct mbuf *) xdrs->x_private; in xdrmbuf_putbytes()
220 sz = M_TRAILINGSPACE(m) + (m->m_len - xdrs->x_handy); in xdrmbuf_putbytes()
223 bcopy(addr, mtod(m, char *) + xdrs->x_handy, sz); in xdrmbuf_putbytes()
225 xdrs->x_handy += sz; in xdrmbuf_putbytes()
226 if (xdrs->x_handy > m->m_len) in xdrmbuf_putbytes()
227 m->m_len = xdrs->x_handy; in xdrmbuf_putbytes()
230 if (xdrs->x_handy == m->m_len && M_TRAILINGSPACE(m) == 0) { in xdrmbuf_putbytes()
239 xdrs->x_private = (void *) m; in xdrmbuf_putbytes()
240 xdrs->x_handy = 0; in xdrmbuf_putbytes()
248 xdrmbuf_getpos(XDR *xdrs) in xdrmbuf_getpos() argument
250 struct mbuf *m0 = (struct mbuf *) xdrs->x_base; in xdrmbuf_getpos()
251 struct mbuf *m = (struct mbuf *) xdrs->x_private; in xdrmbuf_getpos()
260 return (pos + xdrs->x_handy); in xdrmbuf_getpos()
264 xdrmbuf_setpos(XDR *xdrs, u_int pos) in xdrmbuf_setpos() argument
266 struct mbuf *m = (struct mbuf *) xdrs->x_base; in xdrmbuf_setpos()
274 xdrs->x_private = (void *) m; in xdrmbuf_setpos()
275 xdrs->x_handy = pos; in xdrmbuf_setpos()
281 xdrmbuf_inline(XDR *xdrs, u_int len) in xdrmbuf_inline() argument
283 struct mbuf *m = (struct mbuf *) xdrs->x_private; in xdrmbuf_inline()
289 if (xdrs->x_op == XDR_ENCODE) { in xdrmbuf_inline()
290 available = M_TRAILINGSPACE(m) + (m->m_len - xdrs->x_handy); in xdrmbuf_inline()
292 available = m->m_len - xdrs->x_handy; in xdrmbuf_inline()
296 p = mtod(m, char *) + xdrs->x_handy; in xdrmbuf_inline()
299 xdrs->x_handy += len; in xdrmbuf_inline()
300 if (xdrs->x_handy > m->m_len) in xdrmbuf_inline()
301 m->m_len = xdrs->x_handy; in xdrmbuf_inline()