diff --git a/ipxripd/ipxrip.h b/ipxripd/ipxrip.h new file mode 100644 index 0000000..7b41571 --- /dev/null +++ b/ipxripd/ipxrip.h @@ -0,0 +1,76 @@ +/* + + IPX support library + + Copyright (C) 1994, 1995 Ales Dryak + Copyright (C) 1996, Volker Lendecke + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ +#ifndef __IPXRIP_H__ + +#define __IPXRIP_H__ + +#include +#include "ipxutil.h" + +#define IPX_RIP_PORT (0x453U) +#define IPX_RIP_PTYPE (1U) +#define IPX_RIP_OP_REQUEST (1U) +#define IPX_RIP_GENERAL_RQ (0xFFFFFFFFU) +#define IPX_RIP_OP_RESPONSE (2U) +#define IPX_RIP_MAX_ENTRIES (50U) +#define IPX_RIP_NET_DOWN (16U) + +struct rip_entry +{ + IPXNet network; + hop_t hops ; + tick_t ticks ; +} __attribute__ ((packed)); + +struct rip_packet +{ + unsigned short int operation ; + struct rip_entry rip_entries[IPX_RIP_MAX_ENTRIES] + ; +} __attribute__ ((packed)); + +int ipx_rip_size(int n); +void ipx_rip_dump(struct rip_packet *pkt, int len); +void ipx_rip_fdump(FILE* file, struct rip_packet *pkt, int len); + +struct rip_output +{ + struct sockaddr_ipx dest_addr; + int sk; /* the socket to send/receive on */ + int send_error; + int entries; + struct rip_packet buffer; +}; + +int ipx_rip_output_init(struct rip_output *out, IPXNet net); +void ipx_rip_output_flush(struct rip_output *out); +void ipx_rip_output_request(struct rip_output *out,IPXNet net); +void ipx_rip_output_response(struct rip_output *out, IPXNet net, hop_t hops, + tick_t ticks, int down_allow); +void ipx_rip_output_set_destination(struct rip_output *out, IPXNode node, + IPXPort port); + +extern int (*ipx_rip_output_func)(int sock, void *buffer, int size, + struct sockaddr_ipx *daddr); + +#endif diff --git a/ipxripd/ipxsap.h b/ipxripd/ipxsap.h new file mode 100644 index 0000000..1dc9845 --- /dev/null +++ b/ipxripd/ipxsap.h @@ -0,0 +1,95 @@ +/* + + IPX support library + + Copyright (C) 1994, 1995 Ales Dryak + Copyright (C) 1996, Volker Lendecke + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ +#ifndef __IPXSAP_H__ + +#define __IPXSAP_H__ + +#include +#include "ipxutil.h" + +#define IPX_SAP_PORT (0x452U) +#define IPX_SAP_PTYPE (4U) +#define IPX_SAP_OP_REQUEST (1U) +#define IPX_SAP_GENERAL_RQ (0xFFFFU) +#define IPX_SAP_OP_RESPONSE (2U) +#define IPX_SAP_OP_GNS_REQUEST (3U) +#define IPX_SAP_OP_GNS_RESPONSE (4U) +#define IPX_SAP_MAX_ENTRIES (7U) +#define IPX_SAP_SERVER_DOWN (16U) +#define IPX_SAP_SERVER_NAME_LEN (48U) +#define IPX_SAP_REQUEST_LEN (4U) + +typedef unsigned short int ser_type_t; +typedef char ser_name_t[IPX_SAP_SERVER_NAME_LEN]; + +struct sap_entry +{ + ser_type_t ser_type; + ser_name_t ser_name; + IPXNet network ; + IPXNode node ; + IPXPort port ; + hop_t hops ; +} __attribute__ ((packed)); + +struct sap_packet +{ + unsigned short int operation ; + struct sap_entry sap_entries[IPX_SAP_MAX_ENTRIES] + ; +} __attribute__ ((packed)); + +int ipx_sap_size(int n,unsigned short int operation); +void ipx_sap_dump(struct sap_packet *pkt,int len); +void ipx_sap_fdump(FILE *file,struct sap_packet *pkt,int len); +void ipx_sap_assign_ser_name(ser_name_t dest,ser_name_t src); +void ipx_sap_fprint_name(FILE *file,ser_name_t sname); +int ipx_sap_name_equal(ser_name_t n1,ser_name_t n2); +int ipx_sap_type_equal(ser_type_t t1,ser_type_t t2); + +struct sap_output +{ + struct sockaddr_ipx dest_addr; + int sk; /* the socket to send/receive on */ + int send_error; + int entries; + struct sap_packet buffer; +}; + +int ipx_sap_output_init(struct sap_output *out,IPXNet iface); +void ipx_sap_output_flush(struct sap_output *out); +void ipx_sap_output_request(struct sap_output *out,ser_type_t ser_type); +void ipx_sap_output_gns_request(struct sap_output *out,ser_type_t ser_type); +void ipx_sap_output_response(struct sap_output *out,ser_type_t type, + ser_name_t name,struct sockaddr_ipx *addr, + hop_t hops,int down_allow); +void ipx_sap_output_gns_response(struct sap_output *out,ser_type_t type, + ser_name_t name,struct sockaddr_ipx *addr, + hop_t hops); +void ipx_sap_output_set_destination(struct sap_output *out,IPXNode node, + IPXPort port); + +extern int (*ipx_sap_output_func)(int sock, void *buffer,int size, + struct sockaddr_ipx *daddr); + +#endif