summaryrefslogtreecommitdiff
path: root/packages/libc/src/kerneldefs.pp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/libc/src/kerneldefs.pp')
-rw-r--r--packages/libc/src/kerneldefs.pp789
1 files changed, 789 insertions, 0 deletions
diff --git a/packages/libc/src/kerneldefs.pp b/packages/libc/src/kerneldefs.pp
new file mode 100644
index 0000000000..1efcccaeb1
--- /dev/null
+++ b/packages/libc/src/kerneldefs.pp
@@ -0,0 +1,789 @@
+{$mode objfpc}
+{$h+}
+unit kerneldefs;
+
+interface
+// Translated from asm/types.h (i386)
+
+const
+ HZ = 100;
+ EXEC_PAGESIZE = 4096;
+ NGROUPS = 32;
+ NOGROUP = -(1);
+ MAXHOSTNAMELEN = 64;
+ CLOCKS_PER_SEC = 100;
+type
+ Pumode_t = ^umode_t;
+ umode_t = word;
+
+ P__s8 = ^__s8;
+ __s8 = shortint;
+
+ P__u8 = ^__u8;
+ __u8 = byte;
+
+ P__s16 = ^__s16;
+ __s16 = smallint;
+
+ P__u16 = ^__u16;
+ __u16 = word;
+
+ P__s32 = ^__s32;
+ __s32 = longint;
+
+ P__u32 = ^__u32;
+ __u32 = dword;
+
+ P__s64 = ^__s64;
+ __s64 = int64;
+
+ P__u64 = ^__u64;
+ __u64 = qword;
+
+type
+
+ Ps8 = ^s8;
+ s8 = char;
+
+ Pu8 = ^u8;
+ u8 = byte;
+
+ Ps16 = ^s16;
+ s16 = smallint;
+
+ Pu16 = ^u16;
+ u16 = word;
+
+ Ps32 = ^s32;
+ s32 = longint;
+
+ Pu32 = ^u32;
+ u32 = dword;
+
+ Ps64 = ^s64;
+ s64 = int64;
+
+ Pu64 = ^u64;
+ u64 = qword;
+
+const
+ BITS_PER_LONG = 32;
+
+// Translated from include/linux/if_ether.h
+
+
+const
+ ETH_ALEN = 6;
+ ETH_HLEN = 14;
+ ETH_ZLEN = 60;
+ ETH_DATA_LEN = 1500;
+ ETH_FRAME_LEN = 1514;
+ ETH_P_LOOP = $0060;
+ ETH_P_PUP = $0200;
+ ETH_P_PUPAT = $0201;
+ ETH_P_IP = $0800;
+ ETH_P_X25 = $0805;
+ ETH_P_ARP = $0806;
+ ETH_P_BPQ = $08FF;
+ ETH_P_IEEEPUP = $0a00;
+ ETH_P_IEEEPUPAT = $0a01;
+ ETH_P_DEC = $6000;
+ ETH_P_DNA_DL = $6001;
+ ETH_P_DNA_RC = $6002;
+ ETH_P_DNA_RT = $6003;
+ ETH_P_LAT = $6004;
+ ETH_P_DIAG = $6005;
+ ETH_P_CUST = $6006;
+ ETH_P_SCA = $6007;
+ ETH_P_RARP = $8035;
+ ETH_P_ATALK = $809B;
+ ETH_P_AARP = $80F3;
+ ETH_P_8021Q = $8100;
+ ETH_P_IPX = $8137;
+ ETH_P_IPV6 = $86DD;
+ ETH_P_PPP_DISC = $8863;
+ ETH_P_PPP_SES = $8864;
+ ETH_P_ATMMPOA = $884c;
+ ETH_P_ATMFATE = $8884;
+ ETH_P_802_3 = $0001;
+ ETH_P_AX25 = $0002;
+ ETH_P_ALL = $0003;
+ ETH_P_802_2 = $0004;
+ ETH_P_SNAP = $0005;
+ ETH_P_DDCMP = $0006;
+ ETH_P_WAN_PPP = $0007;
+ ETH_P_PPP_MP = $0008;
+ ETH_P_LOCALTALK = $0009;
+ ETH_P_PPPTALK = $0010;
+ ETH_P_TR_802_2 = $0011;
+ ETH_P_MOBITEX = $0015;
+ ETH_P_CONTROL = $0016;
+ ETH_P_IRDA = $0017;
+ ETH_P_ECONET = $0018;
+type
+ Pethhdr = ^ethhdr;
+ ethhdr = record
+ h_dest : array[0..(ETH_ALEN)-1] of byte;
+ h_source : array[0..(ETH_ALEN)-1] of byte;
+ h_proto : word;
+ end;
+
+// Translated from include/linux/if_fddi.h
+
+
+const
+ FDDI_K_ALEN = 6;
+ FDDI_K_8022_HLEN = 16;
+ FDDI_K_SNAP_HLEN = 21;
+ FDDI_K_8022_ZLEN = 16;
+ FDDI_K_SNAP_ZLEN = 21;
+ FDDI_K_8022_DLEN = 4475;
+ FDDI_K_SNAP_DLEN = 4470;
+ FDDI_K_LLC_ZLEN = 13;
+ FDDI_K_LLC_LEN = 4491;
+ FDDI_FC_K_VOID = $00;
+ FDDI_FC_K_NON_RESTRICTED_TOKEN = $80;
+ FDDI_FC_K_RESTRICTED_TOKEN = $C0;
+ FDDI_FC_K_SMT_MIN = $41;
+ FDDI_FC_K_SMT_MAX = $4F;
+ FDDI_FC_K_MAC_MIN = $C1;
+ FDDI_FC_K_MAC_MAX = $CF;
+ FDDI_FC_K_ASYNC_LLC_MIN = $50;
+ FDDI_FC_K_ASYNC_LLC_DEF = $54;
+ FDDI_FC_K_ASYNC_LLC_MAX = $5F;
+ FDDI_FC_K_SYNC_LLC_MIN = $D0;
+ FDDI_FC_K_SYNC_LLC_MAX = $D7;
+ FDDI_FC_K_IMPLEMENTOR_MIN = $60;
+ FDDI_FC_K_IMPLEMENTOR_MAX = $6F;
+ FDDI_FC_K_RESERVED_MIN = $70;
+ FDDI_FC_K_RESERVED_MAX = $7F;
+ FDDI_EXTENDED_SAP = $AA;
+ FDDI_UI_CMD = $03;
+
+type
+ Pfddi_8022_1_hdr = ^fddi_8022_1_hdr;
+ fddi_8022_1_hdr = record
+ dsap : __u8;
+ ssap : __u8;
+ ctrl : __u8;
+ end;
+
+ Pfddi_8022_2_hdr = ^fddi_8022_2_hdr;
+ fddi_8022_2_hdr = record
+ dsap : __u8;
+ ssap : __u8;
+ ctrl_1 : __u8;
+ ctrl_2 : __u8;
+ end;
+
+
+const
+ FDDI_K_OUI_LEN = 3;
+type
+ Pfddi_snap_hdr = ^fddi_snap_hdr;
+ fddi_snap_hdr = record
+ dsap : __u8;
+ ssap : __u8;
+ ctrl : __u8;
+ oui : array[0..(FDDI_K_OUI_LEN)-1] of __u8;
+ ethertype : __u16;
+ end;
+
+ Pfddihdr = ^fddihdr;
+ fddihdr = record
+ fc : __u8;
+ daddr : array[0..(FDDI_K_ALEN)-1] of __u8;
+ saddr : array[0..(FDDI_K_ALEN)-1] of __u8;
+ hdr : record
+ case longint of
+ 0 : ( llc_8022_1 : fddi_8022_1_hdr );
+ 1 : ( llc_8022_2 : fddi_8022_2_hdr );
+ 2 : ( llc_snap : fddi_snap_hdr );
+ end;
+ end;
+
+ Pfddi_statistics = ^fddi_statistics;
+ fddi_statistics = record
+ rx_packets : __u32;
+ tx_packets : __u32;
+ rx_bytes : __u32;
+ tx_bytes : __u32;
+ rx_errors : __u32;
+ tx_errors : __u32;
+ rx_dropped : __u32;
+ tx_dropped : __u32;
+ multicast : __u32;
+ transmit_collision : __u32;
+ rx_length_errors : __u32;
+ rx_over_errors : __u32;
+ rx_crc_errors : __u32;
+ rx_frame_errors : __u32;
+ rx_fifo_errors : __u32;
+ rx_missed_errors : __u32;
+ tx_aborted_errors : __u32;
+ tx_carrier_errors : __u32;
+ tx_fifo_errors : __u32;
+ tx_heartbeat_errors : __u32;
+ tx_window_errors : __u32;
+ rx_compressed : __u32;
+ tx_compressed : __u32;
+ smt_station_id : array[0..7] of __u8;
+ smt_op_version_id : __u32;
+ smt_hi_version_id : __u32;
+ smt_lo_version_id : __u32;
+ smt_user_data : array[0..31] of __u8;
+ smt_mib_version_id : __u32;
+ smt_mac_cts : __u32;
+ smt_non_master_cts : __u32;
+ smt_master_cts : __u32;
+ smt_available_paths : __u32;
+ smt_config_capabilities : __u32;
+ smt_config_policy : __u32;
+ smt_connection_policy : __u32;
+ smt_t_notify : __u32;
+ smt_stat_rpt_policy : __u32;
+ smt_trace_max_expiration : __u32;
+ smt_bypass_present : __u32;
+ smt_ecm_state : __u32;
+ smt_cf_state : __u32;
+ smt_remote_disconnect_flag : __u32;
+ smt_station_status : __u32;
+ smt_peer_wrap_flag : __u32;
+ smt_time_stamp : __u32;
+ smt_transition_time_stamp : __u32;
+ mac_frame_status_Functions : __u32;
+ mac_t_max_capability : __u32;
+ mac_tvx_capability : __u32;
+ mac_available_paths : __u32;
+ mac_current_path : __u32;
+ mac_upstream_nbr : array[0..(FDDI_K_ALEN)-1] of __u8;
+ mac_downstream_nbr : array[0..(FDDI_K_ALEN)-1] of __u8;
+ mac_old_upstream_nbr : array[0..(FDDI_K_ALEN)-1] of __u8;
+ mac_old_downstream_nbr : array[0..(FDDI_K_ALEN)-1] of __u8;
+ mac_dup_address_test : __u32;
+ mac_requested_paths : __u32;
+ mac_downstream_port_type : __u32;
+ mac_smt_address : array[0..(FDDI_K_ALEN)-1] of __u8;
+ mac_t_req : __u32;
+ mac_t_neg : __u32;
+ mac_t_max : __u32;
+ mac_tvx_value : __u32;
+ mac_frame_cts : __u32;
+ mac_copied_cts : __u32;
+ mac_transmit_cts : __u32;
+ mac_error_cts : __u32;
+ mac_lost_cts : __u32;
+ mac_frame_error_threshold : __u32;
+ mac_frame_error_ratio : __u32;
+ mac_rmt_state : __u32;
+ mac_da_flag : __u32;
+ mac_una_da_flag : __u32;
+ mac_frame_error_flag : __u32;
+ mac_ma_unitdata_available : __u32;
+ mac_hardware_present : __u32;
+ mac_ma_unitdata_enable : __u32;
+ path_tvx_lower_bound : __u32;
+ path_t_max_lower_bound : __u32;
+ path_max_t_req : __u32;
+ path_configuration : array[0..7] of __u32;
+ port_my_type : array[0..1] of __u32;
+ port_neighbor_type : array[0..1] of __u32;
+ port_connection_policies : array[0..1] of __u32;
+ port_mac_indicated : array[0..1] of __u32;
+ port_current_path : array[0..1] of __u32;
+ port_requested_paths : array[0..(3 * 2)-1] of __u8;
+ port_mac_placement : array[0..1] of __u32;
+ port_available_paths : array[0..1] of __u32;
+ port_pmd_class : array[0..1] of __u32;
+ port_connection_capabilities : array[0..1] of __u32;
+ port_bs_flag : array[0..1] of __u32;
+ port_lct_fail_cts : array[0..1] of __u32;
+ port_ler_estimate : array[0..1] of __u32;
+ port_lem_reject_cts : array[0..1] of __u32;
+ port_lem_cts : array[0..1] of __u32;
+ port_ler_cutoff : array[0..1] of __u32;
+ port_ler_alarm : array[0..1] of __u32;
+ port_connect_state : array[0..1] of __u32;
+ port_pcm_state : array[0..1] of __u32;
+ port_pc_withhold : array[0..1] of __u32;
+ port_ler_flag : array[0..1] of __u32;
+ port_hardware_present : array[0..1] of __u32;
+ end;
+
+// Translated from /linux/if_slip.h
+
+
+const
+ SL_MODE_SLIP = 0;
+ SL_MODE_CSLIP = 1;
+ SL_MODE_KISS = 4;
+ SL_OPT_SIXBIT = 2;
+ SL_OPT_ADAPTIVE = 8;
+
+ SIOCDEVPRIVATE = $89F0;
+ SIOCPROTOPRIVATE = $89E0;
+
+ SIOCSKEEPALIVE = SIOCDEVPRIVATE;
+ SIOCGKEEPALIVE = SIOCDEVPRIVATE + 1;
+ SIOCSOUTFILL = SIOCDEVPRIVATE + 2;
+ SIOCGOUTFILL = SIOCDEVPRIVATE + 3;
+ SIOCSLEASE = SIOCDEVPRIVATE + 4;
+ SIOCGLEASE = SIOCDEVPRIVATE + 5;
+
+// Translated from /linux/if_tr.h
+
+
+const
+ TR_ALEN = 6;
+ AC = $10;
+ LLC_FRAME = $40;
+
+ EXTENDED_SAP = $AA;
+ UI_CMD = $03;
+
+
+type
+ Ptrh_hdr = ^trh_hdr;
+ trh_hdr = record
+ ac : __u8;
+ fc : __u8;
+ daddr : array[0..(TR_ALEN)-1] of __u8;
+ saddr : array[0..(TR_ALEN)-1] of __u8;
+ rcf : __u16;
+ rseg : array[0..7] of __u16;
+ end;
+
+ Ptrllc = ^trllc;
+ trllc = record
+ dsap : __u8;
+ ssap : __u8;
+ llc : __u8;
+ protid : array[0..2] of __u8;
+ ethertype : __u16;
+ end;
+
+ Ptr_statistics = ^tr_statistics;
+ tr_statistics = record
+ rx_packets : dword;
+ tx_packets : dword;
+ rx_bytes : dword;
+ tx_bytes : dword;
+ rx_errors : dword;
+ tx_errors : dword;
+ rx_dropped : dword;
+ tx_dropped : dword;
+ multicast : dword;
+ transmit_collision : dword;
+ line_errors : dword;
+ internal_errors : dword;
+ burst_errors : dword;
+ A_C_errors : dword;
+ abort_delimiters : dword;
+ lost_frames : dword;
+ recv_congest_count : dword;
+ frame_copied_errors : dword;
+ frequency_errors : dword;
+ token_errors : dword;
+ dummy1 : dword;
+ end;
+
+
+ const
+ TR_RII = $80;
+ TR_RCF_DIR_BIT = $80;
+ TR_RCF_LEN_MASK = $1f00;
+ TR_RCF_BROADCAST = $8000;
+ TR_RCF_LIMITED_BROADCAST = $C000;
+ TR_RCF_FRAME2K = $20;
+ TR_RCF_BROADCAST_MASK = $C000;
+ TR_MAXRIFLEN = 18;
+
+const
+ TR_HLEN = (SizeOf(trh_hdr) + SizeOf(trllc));
+
+// Translated from linux/ppp_defs.h
+
+ const
+ PPP_HDRLEN = 4;
+ PPP_FCSLEN = 2;
+ PPP_MRU = 1500;
+
+Function PPP_ADDRESS(const p): __u8;
+Function PPP_CONTROL(const p): __u8;
+Function PPP_PROTOCOL(const p): __u16;
+
+
+Const
+ PPP_ALLSTATIONS = $ff;
+ PPP_UI = $03;
+ PPP_FLAG = $7e;
+ PPP_ESCAPE = $7d;
+ PPP_TRANS = $20;
+ PPP_IP = $21;
+ PPP_AT = $29;
+ PPP_IPX = $2b;
+ PPP_VJC_COMP = $2d;
+ PPP_VJC_UNCOMP = $2f;
+ PPP_MP = $3d;
+ PPP_IPV6 = $57;
+ PPP_COMPFRAG = $fb;
+ PPP_COMP = $fd;
+ PPP_IPCP = $8021;
+ PPP_ATCP = $8029;
+ PPP_IPXCP = $802b;
+ PPP_IPV6CP = $8057;
+ PPP_CCPFRAG = $80fb;
+ PPP_CCP = $80fd;
+ PPP_LCP = $c021;
+ PPP_PAP = $c023;
+ PPP_LQR = $c025;
+ PPP_CHAP = $c223;
+ PPP_CBCP = $c029;
+ PPP_INITFCS = $ffff;
+ PPP_GOODFCS = $f0b8;
+
+ type
+
+ Pext_accm = ^ext_accm;
+ ext_accm = packed array[0..8-1] of __u32;
+
+ NPmode = Longint;
+ Const
+ NPMODE_PASS = 0;
+ NPMODE_DROP = 1;
+ NPMODE_ERROR = 2;
+ NPMODE_QUEUE = 3;
+
+ type
+ Ppppstat = ^pppstat;
+ pppstat = record
+ ppp_discards : __u32;
+ ppp_ibytes : __u32;
+ ppp_ioctects : __u32;
+ ppp_ipackets : __u32;
+ ppp_ierrors : __u32;
+ ppp_ilqrs : __u32;
+ ppp_obytes : __u32;
+ ppp_ooctects : __u32;
+ ppp_opackets : __u32;
+ ppp_oerrors : __u32;
+ ppp_olqrs : __u32;
+ end;
+
+ Pvjstat = ^vjstat;
+ vjstat = record
+ vjs_packets : __u32;
+ vjs_compressed : __u32;
+ vjs_searches : __u32;
+ vjs_misses : __u32;
+ vjs_uncompressedin : __u32;
+ vjs_compressedin : __u32;
+ vjs_errorin : __u32;
+ vjs_tossed : __u32;
+ end;
+
+ Pcompstat = ^compstat;
+ compstat = record
+ unc_bytes : __u32;
+ unc_packets : __u32;
+ comp_bytes : __u32;
+ comp_packets : __u32;
+ inc_bytes : __u32;
+ inc_packets : __u32;
+ in_count : __u32;
+ bytes_out : __u32;
+ ratio : double;
+ end;
+
+ Pppp_stats = ^ppp_stats;
+ ppp_stats = record
+ p : pppstat;
+ vj : vjstat;
+ end;
+
+ Pppp_comp_stats = ^ppp_comp_stats;
+ ppp_comp_stats = record
+ c : compstat;
+ d : compstat;
+ end;
+
+ __kernel_time_t = Longint;
+ ppp_idle = record
+ xmit_idle: __kernel_time_t;
+ recv_idle: __kernel_time_t;
+ end;
+ Pppp_idle = ^ppp_idle;
+
+// Translated from linux/ppp-comp.h
+
+ const
+ DO_BSD_COMPRESS = 1;
+ DO_DEFLATE = 1;
+ DO_PREDICTOR_1 = 0;
+ DO_PREDICTOR_2 = 0;
+
+ type
+ Pcompressor = ^compressor;
+ compressor = record
+ compress_proto : longint;
+ comp_alloc : Function (options:Pbyte; opt_len:longint):pointer;cdecl;
+ comp_free : procedure (state:pointer);
+ comp_init : Function (state:pointer; options:Pbyte; opt_len:longint; _unit:longint; opthdr:longint;
+ debug:longint):longint;
+ comp_reset : procedure (state:pointer);
+ compress : Function (state:pointer; rptr:Pbyte; obuf:Pbyte; isize:longint; osize:longint):longint;
+ comp_stat : procedure (state:pointer; stats:Pcompstat);
+ decomp_alloc : Function (options:Pbyte; opt_len:longint):pointer;
+ decomp_free : procedure (state:pointer);
+ decomp_init : Function (state:pointer; options:Pbyte; opt_len:longint; _unit:longint; opthdr:longint;
+ mru:longint; debug:longint):longint;
+ decomp_reset : procedure (state:pointer);
+ decompress : Function (state:pointer; ibuf:Pbyte; isize:longint; obuf:Pbyte; osize:longint):longint;
+ incomp : procedure (state:pointer; ibuf:Pbyte; icnt:longint);
+ decomp_stat : procedure (state:pointer; stats:Pcompstat);
+ end;
+
+
+ const
+ DECOMP_ERROR = -(1);
+ DECOMP_FATALERROR = -(2);
+ CCP_CONFREQ = 1;
+ CCP_CONFACK = 2;
+ CCP_TERMREQ = 5;
+ CCP_TERMACK = 6;
+ CCP_RESETREQ = 14;
+ CCP_RESETACK = 15;
+ CCP_MAX_OPTION_LENGTH = 32;
+
+
+Function CCP_CODE(dp: Pointer): Byte;
+Function CCP_ID(dp: Pointer): Byte;
+Function CCP_LENGTH(dp: Pointer): Word;
+Function CCP_OPT_CODE(dp: Pointer): Byte;
+Function CCP_OPT_LENGTH(dp: Pointer): Byte;
+
+const
+ CCP_HDRLEN = 4;
+ CCP_OPT_MINLEN = 2;
+ CI_BSD_COMPRESS = 21;
+ CILEN_BSD_COMPRESS = 3;
+ BSD_CURRENT_VERSION = 1;
+
+Function BSD_NBITS(x: longint): longint;
+Function BSD_VERSION(x: longint): longint;
+Function BSD_MAKE_OPT(v, n: longint): longint;
+
+ const
+ BSD_MIN_BITS = 9;
+ BSD_MAX_BITS = 15;
+ CI_DEFLATE = 26;
+ CI_DEFLATE_DRAFT = 24;
+ CILEN_DEFLATE = 4;
+ DEFLATE_MIN_SIZE = 8;
+ DEFLATE_MAX_SIZE = 15;
+ DEFLATE_METHOD_VAL = 8;
+
+Function DEFLATE_SIZE(x: longint): longint;
+Function DEFLATE_METHOD(x: longint): longint;
+Function DEFLATE_MAKE_OPT(w: longint): longint;
+
+ const
+ DEFLATE_CHK_SEQUENCE = 0;
+ CI_PREDICTOR_1 = 1;
+ CILEN_PREDICTOR_1 = 2;
+ CI_PREDICTOR_2 = 2;
+ CILEN_PREDICTOR_2 = 2;
+
+// Translated from linux/atalk.h
+
+ const
+ ATPORT_FIRST = 1;
+ ATPORT_RESERVED = 128;
+ ATPORT_LAST = 254;
+ ATADDR_ANYNET = __u16(0);
+ ATADDR_ANYNODE = __u8(0);
+ ATADDR_ANYPORT = __u8(0);
+ ATADDR_BCAST = __u8(255);
+
+ const
+ DDP_MAXSZ = 587;
+ DDP_MAXHOPS = 15;
+ SIOCATALKDIFADDR = SIOCPROTOPRIVATE + 0;
+ type
+ Pat_addr = ^at_addr;
+ at_addr = record
+ s_net : __u16;
+ s_node : __u8;
+ end;
+
+ sa_family_t = Word; // From libc.
+
+ Psockaddr_at = ^sockaddr_at;
+ sockaddr_at = record
+ sat_family : sa_family_t;
+ sat_port : __u8;
+ sat_addr : at_addr;
+ sat_zero : array[0..7] of char;
+ end;
+
+ Pnetrange = ^netrange;
+ netrange = record
+ nr_phase : __u8;
+ nr_firstnet : __u16;
+ nr_lastnet : __u16;
+ end;
+
+ Patalk_route = ^atalk_route;
+ atalk_route = record
+ dev : Pointer; // pnet_device ??
+ target : at_addr;
+ gateway : at_addr;
+ flags : longint;
+ next : Patalk_route;
+ end;
+
+Const
+ ATIF_PROBE = 1; { Probing for an address }
+ ATIF_PROBE_FAIL = 2; { Probe collided }
+
+Type
+ PATalkIFace = ^TATalkIFace;
+ atalk_iface = record
+ dev: Pointer;
+ address: at_addr;
+ status: longint;
+ nets: netrange;
+ next: PATalkIFace;
+ end;
+ TATalkIFace = atalk_iface;
+
+
+ Patalk_sock = ^atalk_sock;
+ atalk_sock = record
+ dest_net : word;
+ src_net : word;
+ dest_node : byte;
+ src_node : byte;
+ dest_port : byte;
+ src_port : byte;
+ end;
+
+// Translated from linux/igmp.h
+
+ type
+ Pigmphdr = ^igmphdr;
+ igmphdr = record
+ __type : __u8;
+ code : __u8;
+ csum : __u16;
+ group : __u32;
+ end;
+
+
+ const
+ IGMP_HOST_MEMBERSHIP_QUERY = $11;
+ IGMP_HOST_MEMBERSHIP_REPORT = $12;
+ IGMP_DVMRP = $13;
+ IGMP_PIM = $14;
+ IGMP_TRACE = $15;
+ IGMP_HOST_NEW_MEMBERSHIP_REPORT = $16;
+ IGMP_HOST_LEAVE_MESSAGE = $17;
+ IGMP_MTRACE_RESP = $1e;
+ IGMP_MTRACE = $1f;
+ IGMP_DELAYING_MEMBER = $01;
+ IGMP_IDLE_MEMBER = $02;
+ IGMP_LAZY_MEMBER = $03;
+ IGMP_SLEEPING_MEMBER = $04;
+ IGMP_AWAKENING_MEMBER = $05;
+ IGMP_MINLEN = 8;
+ IGMP_MAX_HOST_REPORT_DELAY = 10;
+ IGMP_TIMER_SCALE = 10;
+ IGMP_AGE_THRESHOLD = 400;
+
+{ ---------------------------------------------------------------------
+ Borland compatibility types
+ ---------------------------------------------------------------------}
+
+Type
+ TATalkRoute = atalk_route;
+
+Implementation
+
+Function PPP_ADDRESS(const p): __u8;
+
+begin
+ Result:=P__u8(@p)^;
+end;
+
+Function PPP_CONTROL(const p): __u8;
+begin
+ Result:=P__u8(Cardinal(@p) + SizeOf(__u8))^;
+end;
+
+Function PPP_PROTOCOL(const p): __u16;
+begin
+ Result:=P__u8(Cardinal(@p) + SizeOf(__u8)*2)^ shl 8;
+ Result:=Result + P__u8(Cardinal(@p) + SizeOf(__u8)*3)^
+end;
+
+Function CCP_CODE(dp: Pointer): Byte;
+begin
+ Result:=PByte(dp)^;
+end;
+
+Function CCP_ID(dp: Pointer): Byte;
+begin
+ Inc(PByte(dp));
+ Result:=PByte(dp)^;
+end;
+
+Function CCP_LENGTH(dp: Pointer): Word;
+begin
+ Inc(PByte(dp), 2);
+ Result:=(PByte(dp)^ shl 8);
+ Inc(PByte(dp), 1);
+ Result:=Result + PByte(dp)^;
+end;
+
+Function CCP_OPT_CODE(dp: Pointer): Byte;
+begin
+ Result:=PByte(dp)^;
+end;
+
+Function CCP_OPT_LENGTH(dp: Pointer): Byte;
+begin
+ Inc(PByte(dp));
+ Result:=PByte(dp)^;
+end;
+
+Function DEFLATE_SIZE(x: longint): longint;
+begin
+ Result:=(Cardinal(x) shr 4) + DEFLATE_MIN_SIZE;
+end;
+
+Function DEFLATE_METHOD(x: longint): longint;
+begin
+ Result:=x and $0F;
+end;
+
+Function DEFLATE_MAKE_OPT(w: longint): longint;
+begin
+ Result:=((w - DEFLATE_MIN_SIZE) shl 4) + DEFLATE_METHOD_VAL;
+end;
+
+Function BSD_NBITS(x: longint): longint;
+begin
+ Result:=(x and $1F);
+end;
+
+Function BSD_VERSION(x: longint): longint;
+begin
+ Result:=Cardinal(x) shr 5;
+end;
+
+Function BSD_MAKE_OPT(v, n: longint): longint;
+begin
+ Result:= longint((Cardinal(v) shl 5) or Cardinal(n));
+end;
+
+end.