1*12f43dabShshoexer /* $OpenBSD: field.h,v 1.6 2004/05/23 18:17:55 hshoexer Exp $ */ 201f1f88eSniklas /* $EOM: field.h,v 1.3 1998/08/02 20:25:01 niklas Exp $ */ 32040585eSniklas 42040585eSniklas /* 52040585eSniklas * Copyright (c) 1998 Niklas Hallqvist. All rights reserved. 62040585eSniklas * 72040585eSniklas * Redistribution and use in source and binary forms, with or without 82040585eSniklas * modification, are permitted provided that the following conditions 92040585eSniklas * are met: 102040585eSniklas * 1. Redistributions of source code must retain the above copyright 112040585eSniklas * notice, this list of conditions and the following disclaimer. 122040585eSniklas * 2. Redistributions in binary form must reproduce the above copyright 132040585eSniklas * notice, this list of conditions and the following disclaimer in the 142040585eSniklas * documentation and/or other materials provided with the distribution. 152040585eSniklas * 162040585eSniklas * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 172040585eSniklas * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 182040585eSniklas * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 192040585eSniklas * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 202040585eSniklas * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 212040585eSniklas * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 222040585eSniklas * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 232040585eSniklas * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 242040585eSniklas * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 252040585eSniklas * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 262040585eSniklas */ 272040585eSniklas 282040585eSniklas /* 292040585eSniklas * This code was written under funding by Ericsson Radio Systems. 302040585eSniklas */ 312040585eSniklas 322040585eSniklas #ifndef _FIELD_H_ 332040585eSniklas #define _FIELD_H_ 342040585eSniklas 352040585eSniklas #include <sys/types.h> 362040585eSniklas 372040585eSniklas struct field { 382040585eSniklas char *name; 392040585eSniklas int offset; 402040585eSniklas size_t len; 41fb9475d6Sderaadt enum { 42fb9475d6Sderaadt raw, num, mask, ign, cst 43fb9475d6Sderaadt } type; 442040585eSniklas struct constant_map **maps; 452040585eSniklas }; 462040585eSniklas 472040585eSniklas extern void field_dump_field(struct field *, u_int8_t *); 482040585eSniklas extern void field_dump_payload(struct field *, u_int8_t *); 492040585eSniklas extern u_int32_t field_get_num(struct field *, u_int8_t *); 502040585eSniklas extern void field_get_raw(struct field *, u_int8_t *, u_int8_t *); 512040585eSniklas extern void field_set_num(struct field *, u_int8_t *, u_int32_t); 522040585eSniklas extern void field_set_raw(struct field *, u_int8_t *, u_int8_t *); 532040585eSniklas 542040585eSniklas #endif /* _FIELD_H_ */ 55