1 /* $NetBSD: put.c,v 1.2 1997/03/25 03:07:33 thorpej Exp $ */
4 * Copyright (c) 1993-95 Mats O Jansson. All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 * must display the following acknowledgement:
16 * This product includes software developed by Mats O Jansson.
17 * 4. The name of the author may not be used to endorse or promote products
18 * derived from this software without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #include <sys/cdefs.h>
34 static char rcsid
[]="$NetBSD: put.c,v 1.2 1997/03/25 03:07:33 thorpej Exp $";
42 mopPutChar(pkt
, index
, value
)
52 mopPutShort(pkt
, index
, value
)
58 for (i
= 0; i
< 2; i
++) {
59 pkt
[*index
+i
] = value
% 256;
66 mopPutLong(pkt
, index
, value
)
72 for (i
= 0; i
< 4; i
++) {
73 pkt
[*index
+i
] = value
% 256;
80 mopPutMulti(pkt
, index
, value
, size
)
86 for (i
= 0; i
< size
; i
++) {
87 pkt
[*index
+i
] = value
[i
];
89 *index
= *index
+ size
;
93 mopPutTime(pkt
, index
, value
)
107 timenow
= localtime(&tnow
);
109 mopPutChar (pkt
,index
,10);
110 mopPutChar (pkt
,index
,(timenow
->tm_year
/ 100) + 19);
111 mopPutChar (pkt
,index
,(timenow
->tm_year
% 100));
112 mopPutChar (pkt
,index
,(timenow
->tm_mon
+ 1));
113 mopPutChar (pkt
,index
,(timenow
->tm_mday
));
114 mopPutChar (pkt
,index
,(timenow
->tm_hour
));
115 mopPutChar (pkt
,index
,(timenow
->tm_min
));
116 mopPutChar (pkt
,index
,(timenow
->tm_sec
));
117 mopPutChar (pkt
,index
,0x00);
118 mopPutChar (pkt
,index
,0x00);
119 mopPutChar (pkt
,index
,0x00);
123 mopPutHeader(pkt
, index
, dst
, src
, proto
, trans
)
131 mopPutMulti(pkt
, index
, dst
, 6);
132 mopPutMulti(pkt
, index
, src
, 6);
133 if (trans
== TRANS_8023
) {
134 mopPutShort(pkt
, index
, 0);
135 mopPutChar (pkt
, index
, MOP_K_PROTO_802_DSAP
);
136 mopPutChar (pkt
, index
, MOP_K_PROTO_802_SSAP
);
137 mopPutChar (pkt
, index
, MOP_K_PROTO_802_CNTL
);
138 mopPutChar (pkt
, index
, 0x08);
139 mopPutChar (pkt
, index
, 0x00);
140 mopPutChar (pkt
, index
, 0x2b);
142 #if !defined(__FreeBSD__)
143 mopPutChar(pkt
, index
, (proto
/ 256));
144 mopPutChar(pkt
, index
, (proto
% 256));
146 if (trans
== TRANS_8023
) {
147 mopPutChar(pkt
, index
, (proto
/ 256));
148 mopPutChar(pkt
, index
, (proto
% 256));
150 mopPutChar(pkt
, index
, (proto
% 256));
151 mopPutChar(pkt
, index
, (proto
/ 256));
154 if (trans
== TRANS_ETHER
)
155 mopPutShort(pkt
, index
, 0);
160 mopPutLength(pkt
, trans
, len
)
170 mopPutChar(pkt
, &index
, ((len
- 16) % 256));
171 mopPutChar(pkt
, &index
, ((len
- 16) / 256));
175 #if !defined(__FreeBSD__)
176 mopPutChar(pkt
, &index
, ((len
- 14) / 256));
177 mopPutChar(pkt
, &index
, ((len
- 14) % 256));
179 mopPutChar(pkt
, &index
, ((len
- 14) % 256));
180 mopPutChar(pkt
, &index
, ((len
- 14) / 256));