1704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/**************************************************************************** 2704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner **************************************************************************** 3704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** 4704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** This header was automatically generated from a Linux kernel header 5704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** of the same name, to make information necessary for userspace to 6704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** call into the kernel available to libc. It contains only constants, 7704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** structures, and macros generated from the original header, and thus, 8704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** contains no copyrightable information. 9704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner *** 10704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner **************************************************************************** 11704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner ****************************************************************************/ 12704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#ifndef _IPT_SCTP_H_ 13704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define _IPT_SCTP_H_ 14704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 15704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IPT_SCTP_SRC_PORTS 0x01 16704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IPT_SCTP_DEST_PORTS 0x02 17704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IPT_SCTP_CHUNK_TYPES 0x04 18704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 19704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IPT_SCTP_VALID_FLAGS 0x07 20704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 21704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct ipt_sctp_flag_info { 22704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int8_t chunktype; 23704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int8_t flag; 24704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int8_t flag_mask; 25704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 26704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 27704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define IPT_NUM_SCTP_FLAGS 4 28704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 29704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct ipt_sctp_info { 30704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int16_t dpts[2]; 31704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int16_t spts[2]; 32704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 33704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int32_t chunkmap[256 / sizeof (u_int32_t)]; 34704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 35704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNK_MATCH_ANY 0x01 36704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNK_MATCH_ALL 0x02 37704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNK_MATCH_ONLY 0x04 38704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 39704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int32_t chunk_match_type; 40704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner struct ipt_sctp_flag_info flag_info[IPT_NUM_SCTP_FLAGS]; 41704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner int flag_count; 42704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 43704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int32_t flags; 44704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner u_int32_t invflags; 45704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 46704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 47704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define bytes(type) (sizeof(type) * 8) 48704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 49704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNKMAP_SET(chunkmap, type) do { chunkmap[type / bytes(u_int32_t)] |= 1 << (type % bytes(u_int32_t)); } while (0) 50704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 51704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNKMAP_CLEAR(chunkmap, type) do { chunkmap[type / bytes(u_int32_t)] &= ~(1 << (type % bytes(u_int32_t))); } while (0) 52704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 53704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNKMAP_IS_SET(chunkmap, type) ({ (chunkmap[type / bytes (u_int32_t)] & (1 << (type % bytes (u_int32_t)))) ? 1: 0; }) 54704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 55704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNKMAP_RESET(chunkmap) do { int i; for (i = 0; i < ARRAY_SIZE(chunkmap); i++) chunkmap[i] = 0; } while (0) 56704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 57704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNKMAP_SET_ALL(chunkmap) do { int i; for (i = 0; i < ARRAY_SIZE(chunkmap); i++) chunkmap[i] = ~0; } while (0) 58704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 59704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNKMAP_COPY(destmap, srcmap) do { int i; for (i = 0; i < ARRAY_SIZE(chunkmap); i++) destmap[i] = srcmap[i]; } while (0) 60704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 61704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNKMAP_IS_CLEAR(chunkmap) ({ int i; int flag = 1; for (i = 0; i < ARRAY_SIZE(chunkmap); i++) { if (chunkmap[i]) { flag = 0; break; } } flag; }) 62704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 63704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) ({ int i; int flag = 1; for (i = 0; i < ARRAY_SIZE(chunkmap); i++) { if (chunkmap[i] != ~0) { flag = 0; break; } } flag; }) 64704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 65704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif 66704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 67