Difference for arch/linux/ipx_bsd.c from version 1.1 to 1.2


version 1.1 version 1.2
Line 27
 
Line 27
 #define leave_priv_setting()  #define leave_priv_setting()
 #endif  #endif
   
   static ipx_socket_t mysock;
   
 static int ipx_bsd_GetMyAddress( void )  static int ipx_bsd_GetMyAddress( void )
 {  {
   int sock;    int sock;
Line 73
 
Line 75
   return(0);    return(0);
 }  }
   
 static int ipx_bsd_OpenSocket(ipx_socket_t *sk, int port)  static int ipx_bsd_OpenSocket(int port)
 {  {
   int sock; /* sock here means Linux socket handle */    int sock; /* sock here means Linux socket handle */
   int opt;    int opt;
Line 163
 
Line 165
     }      }
   }    }
   leave_priv_setting();    leave_priv_setting();
   sk->fd = sock;    mysock.fd = sock;
   sk->socket = port;    mysock.socket = port;
   
     ipx_bsd_GetMyAddress();
   
   return 0;    return 0;
 }  }
   
 static void ipx_bsd_CloseSocket(ipx_socket_t *mysock) {  static void ipx_bsd_CloseSocket(void) {
   /* now close the file descriptor for the socket, and free it */    /* now close the file descriptor for the socket, and free it */
   n_printf("IPX: closing file descriptor on socket %x\n", mysock->socket);    n_printf("IPX: closing file descriptor on socket %x\n", mysock.socket);
   close(mysock->fd);    close(mysock.fd);
 }  }
   
 static int ipx_bsd_SendPacket(ipx_socket_t *mysock, IPXPacket_t *IPXHeader,  static int ipx_bsd_SendPacket(IPXPacket_t *IPXHeader,
  u_char *data, int dataLen) {   u_char *data, int dataLen) {
   struct sockaddr_ipx ipxs;    struct sockaddr_ipx ipxs;
    
Line 187
 
Line 192
 /*  ipxs.sipx_network = htonl(MyNetwork); */  /*  ipxs.sipx_network = htonl(MyNetwork); */
   }    }
   memcpy(&ipxs.sipx_node, IPXHeader->Destination.Node, 6);    memcpy(&ipxs.sipx_node, IPXHeader->Destination.Node, 6);
   memcpy(&ipxs.sipx_port, IPXHeader->Destination.Socket, 2);    //memcpy(&ipxs.sipx_port, IPXHeader->Destination.Socket, 2);
     ipxs.sipx_port=htons(mysock.socket);
   ipxs.sipx_type = IPXHeader->PacketType;    ipxs.sipx_type = IPXHeader->PacketType;
   /* ipxs.sipx_port=htons(0x452); */    /* ipxs.sipx_port=htons(0x452); */
   return sendto(mysock->fd, data, dataLen, 0,    return sendto(mysock.fd, data, dataLen, 0,
       (struct sockaddr *) &ipxs, sizeof(ipxs));        (struct sockaddr *) &ipxs, sizeof(ipxs));
 }  }
   
 static int ipx_bsd_ReceivePacket(ipx_socket_t *s, char *buffer, int bufsize,   static int ipx_bsd_ReceivePacket(char *buffer, int bufsize,
  struct ipx_recv_data *rd) {   struct ipx_recv_data *rd) {
  int sz, size;   int sz, size;
  struct sockaddr_ipx ipxs;   struct sockaddr_ipx ipxs;
    
  sz = sizeof(ipxs);   sz = sizeof(ipxs);
  if ((size = recvfrom(s->fd, buffer, bufsize, 0,   if ((size = recvfrom(mysock.fd, buffer, bufsize, 0,
       (struct sockaddr *) &ipxs, &sz)) <= 0)        (struct sockaddr *) &ipxs, &sz)) <= 0)
       return size;        return size;
  memcpy(rd->src_network, &ipxs.sipx_network, 4);   memcpy(rd->src_network, &ipxs.sipx_network, 4);
  memcpy(rd->src_node, ipxs.sipx_node, 6);   memcpy(rd->src_node, ipxs.sipx_node, 6);
  rd->src_socket = ipxs.sipx_port;   rd->src_socket = ipxs.sipx_port;
  rd->dst_socket = s->socket;   rd->dst_socket = mysock.socket;
  rd->pkt_type = ipxs.sipx_type;   rd->pkt_type = ipxs.sipx_type;
      
  return size;   return size;
 }  }
   
   static int ipx_bsd_general_PacketReady(void) {
    return ipx_general_PacketReady(mysock.fd);
   }
   
 struct ipx_driver ipx_bsd = {  struct ipx_driver ipx_bsd = {
  ipx_bsd_GetMyAddress,  // ipx_bsd_GetMyAddress,
  ipx_bsd_OpenSocket,   ipx_bsd_OpenSocket,
  ipx_bsd_CloseSocket,   ipx_bsd_CloseSocket,
  ipx_bsd_SendPacket,   ipx_bsd_SendPacket,
  ipx_bsd_ReceivePacket,   ipx_bsd_ReceivePacket,
  ipx_general_PacketReady   ipx_bsd_general_PacketReady,
    NULL,
    1,
    NULL,
    NULL,
    NULL
 };  };

Legend:
line(s) removed in v.1.1 
line(s) changed
 line(s) added in v.1.2