#define RCSID "$Id: s_common.c,v 1.0 2000/05/08 01:10:12 masputra Exp $"
#include <sys/types.h>
#include <sys/debug.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/stream.h>
#include <sys/stropts.h>
#include <sys/errno.h>
#include <sys/ioccom.h>
#include <sys/cmn_err.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>
#include <sys/strsun.h>
#include <net/ppp_defs.h>
#include <net/pppio.h>
#include "s_common.h"
int
putctl4(queue_t *q, uchar_t type, uchar_t code, uint16_t val)
{
mblk_t *mp;
if ((mp = allocb(4, BPRI_HI)) == NULL) {
return (0);
}
MTYPE(mp) = type;
mp->b_wptr[0] = code;
((uint16_t *)mp->b_wptr)[1] = val;
mp->b_wptr += 4;
putnext(q, mp);
return (1);
}
int
putctl8(queue_t *q, uchar_t type, uchar_t code, uint32_t val)
{
mblk_t *mp;
if ((mp = allocb(8, BPRI_HI)) == NULL) {
return (0);
}
MTYPE(mp) = type;
mp->b_wptr[0] = code;
((uint32_t *)mp->b_wptr)[1] = val;
mp->b_wptr += 8;
putnext(q, mp);
return (1);
}
int
msg_byte(mblk_t *mp, unsigned int i)
{
while (mp != NULL) {
if (i < MBLKL(mp)) {
break;
}
i -= MBLKL(mp);
mp = mp->b_cont;
}
if (mp == NULL) {
return (-1);
}
return (mp->b_rptr[i]);
}
mblk_t *
create_lsmsg(enum LSstat ls_type)
{
mblk_t *mp;
struct ppp_ls *plt;
if ((mp = allocb(sizeof (*plt), BPRI_HI)) == NULL) {
return (NULL);
}
MTYPE(mp) = M_PROTO;
mp->b_wptr += sizeof (*plt);
plt = (struct ppp_ls *)mp->b_rptr;
plt->magic = PPPLSMAGIC;
plt->ppp_message = ls_type;
return (mp);
}