HP 800 HP DLPI Programmer's Guide - Page 189

Connection Mode Example, define LONG_AREA_SIZEAREA_SIZE / sizeofu_long /* AREA_SIZE / 4

Page 189 highlights

Sample Programs Connection Mode Example Connection Mode Example B.11.23_ic60 (C) COPYRIGHT HEWLETT-PACKARD DEVELOPMENT COMPANY L.P. 2003. ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, REPRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF HEWLETT PACKARD COMPANY This program demonstrates data transfer over a connection oriented DLPI stream. It also demonstrates connection handoff #include #include #include #include #include #include #include #include #define SEND_SAP #define RECV_SAP 0x80 0x82 /* sending SAP */ /* receiving SAP */ global areas for sending and receiving messages define AREA_SIZE 5000/* bytes; big enough for largest possible msg */ #define LONG_AREA_SIZE(AREA_SIZE / sizeof(u_long)) /* AREA_SIZE / 4 */ /* these are u_long arrays instead of u_char to insure proper alignment */ u_longctrl_area[LONG_AREA_SIZE];/* for control messages */ u_longdata_area[LONG_AREA_SIZE];/* for data messages */ struct strbuf ctrl_buf = { AREA_SIZE,/* maxlen = AREA_SIZE */ 0,/* len gets filled in for each message */ ctrl_area/* buf = control area */ }; Appendix A 189

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226

Sample Programs
Connection Mode Example
Appendix A
189
Connection Mode Example
/******************************************************************************
@(#)B.11.23_ic60
(C) COPYRIGHT HEWLETT-PACKARD DEVELOPMENT COMPANY L.P. 2003. ALL RIGHTS
RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,
REPRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT
THE PRIOR WRITTEN CONSENT OF HEWLETT PACKARD COMPANY
******************************************************************************/
/******************************************************************************
This program demonstrates data transfer over a connection oriented
DLPI stream. It also demonstrates connection handoff.
******************************************************************************/
#include <stdio.h>
#include <fcntl.h>
#include <memory.h>
#include <sys/types.h>
#include <sys/stream.h>
#include <sys/stropts.h>
#include <sys/dlpi.h>
#include <sys/dlpi_ext.h>
#define SEND_SAP
0x80
/* sending SAP */
#define RECV_SAP
0x82
/* receiving SAP */
/******************************************************************************
global areas for sending and receiving messages
******************************************************************************/
#define AREA_SIZE 5000/* bytes; big enough for largest possible msg */
#define LONG_AREA_SIZE(AREA_SIZE / sizeof(u_long)) /* AREA_SIZE / 4 */
/* these are u_long arrays instead of u_char to insure proper alignment */
u_longctrl_area[LONG_AREA_SIZE];/* for control messages */
u_longdata_area[LONG_AREA_SIZE];/* for data messages */
struct strbuf ctrl_buf = {
AREA_SIZE,/* maxlen = AREA_SIZE */
0,/* len gets filled in for each message */
ctrl_area/* buf = control area */
};