[pisa-src] r1805 - in trunk: libpisa/packet.c libpisa/packet.h pisacd/cdderegister.c pisacd/cdheartbeat.c pisacd/cdregister.c pisasd/sdderegister.c pisasd/sdheartbeat.c pisasd/sdregister.c

  • From: Thomas Jansen <mithi@xxxxxxxxx>
  • To: pisa-src@xxxxxxxxxxxxx
  • Date: Thu, 26 Nov 2009 14:50:58 +0100

Author: tjansen
Date: Thu Nov 26 14:50:58 2009
New Revision: 1805

Log:
Merged the IPv4 and IPv6 versions of pisa_send_control_packet and
pisa_send_control_packet_type.

Most of it was duplicate code, the only difference was the size of the
sockaddr.

Modified:
   trunk/libpisa/packet.c
   trunk/libpisa/packet.h
   trunk/pisacd/cdderegister.c
   trunk/pisacd/cdheartbeat.c
   trunk/pisacd/cdregister.c
   trunk/pisasd/sdderegister.c
   trunk/pisasd/sdheartbeat.c
   trunk/pisasd/sdregister.c

Modified: trunk/libpisa/packet.c
==============================================================================
--- trunk/libpisa/packet.c      Thu Nov 26 14:45:56 2009        (r1804)
+++ trunk/libpisa/packet.c      Thu Nov 26 14:50:58 2009        (r1805)
@@ -21,53 +21,39 @@
  * @param addr destination address
  * @param p packet
  */
-void pisa_send_control_packet_ipv4(int fd, struct sockaddr_in* addr, 
pisa_packet *p)
+void pisa_send_control_packet(int fd, struct sockaddr* addr, pisa_packet *p)
 {
-       sendto(fd, p, pisa_get_packet_length(p), 0, (struct sockaddr*) addr, 
sizeof(struct sockaddr_in));
-}
-
-/**
- * Send a control packet with no payload.
- * @param fd file descriptor for the socket
- * @param addr destination address
- * @param type type of the packet
- */
-void pisa_send_control_packet_ipv4_type(int fd, struct sockaddr_in* addr, 
pisa_tlv_type type)
-{
-       pisa_packet *packet = pisa_alloc_msg();
-
-       pisa_set_packet_type(packet, type);
-       pisa_set_packet_length(packet, sizeof(pisa_packet_common));
+       socklen_t len = 0;
 
-       pisa_send_control_packet_ipv4(fd, addr, packet);
-       pisa_free_msg(packet);
-}
+       switch(addr->sa_family) {
+       case AF_INET:
+               len = sizeof(struct sockaddr_in);
+               break;
+       case AF_INET6:
+               len = sizeof(struct sockaddr_in6);
+               break;
+       default:
+               PISA_ERROR("Invalid address family in 
pisa_send_control_packet");
+               return;
+       }
 
-/**
- * Send a control packet.
- * @param fd file descriptor for the socket
- * @param addr destination address
- * @param p packet
- */
-void pisa_send_control_packet_ipv6(int fd, struct sockaddr_in6* addr, 
pisa_packet *p)
-{
-       sendto(fd, p, pisa_get_packet_length(p), 0, (struct sockaddr*) addr, 
sizeof(struct sockaddr_in6));
+       sendto(fd, p, pisa_get_packet_length(p), 0, addr, len);
 }
 
 /**
  * Send a control packet with no payload.
- * @param fd socket via the packet will be sent
+ * @param fd file descriptor for the socket
  * @param addr destination address
  * @param type type of the packet
  */
-void pisa_send_control_packet_ipv6_type(int fd, struct sockaddr_in6* addr, 
pisa_tlv_type type)
+void pisa_send_control_packet_type(int fd, struct sockaddr* addr, 
pisa_tlv_type type)
 {
        pisa_packet *packet = pisa_alloc_msg();
 
        pisa_set_packet_type(packet, type);
        pisa_set_packet_length(packet, sizeof(pisa_packet_common));
 
-       pisa_send_control_packet_ipv6(fd, addr, packet);
+       pisa_send_control_packet(fd, addr, packet);
        pisa_free_msg(packet);
 }
 

Modified: trunk/libpisa/packet.h
==============================================================================
--- trunk/libpisa/packet.h      Thu Nov 26 14:45:56 2009        (r1804)
+++ trunk/libpisa/packet.h      Thu Nov 26 14:50:58 2009        (r1805)
@@ -123,10 +123,8 @@
        } body;
 } __attribute__ ((packed)) pisa_packet;
 
-void pisa_send_control_packet_ipv4(int fd, struct sockaddr_in* addr, 
pisa_packet *p);
-void pisa_send_control_packet_ipv6(int fd, struct sockaddr_in6* addr, 
pisa_packet *p);
-void pisa_send_control_packet_ipv4_type(int fd, struct sockaddr_in* addr, 
pisa_tlv_type type);
-void pisa_send_control_packet_ipv6_type(int fd, struct sockaddr_in6* addr, 
pisa_tlv_type type);
+void pisa_send_control_packet(int fd, struct sockaddr* addr, pisa_packet *p);
+void pisa_send_control_packet_type(int fd, struct sockaddr* addr, 
pisa_tlv_type type);
 
 void pisa_init_msg(pisa_packet *pkt);
 pisa_packet *pisa_alloc_msg(void);

Modified: trunk/pisacd/cdderegister.c
==============================================================================
--- trunk/pisacd/cdderegister.c Thu Nov 26 14:45:56 2009        (r1804)
+++ trunk/pisacd/cdderegister.c Thu Nov 26 14:50:58 2009        (r1805)
@@ -69,7 +69,7 @@
        } else {
                inet_ntop(AF_INET6, &pend->key.addr.sin6_addr, buffer, 
sizeof(buffer));
                PISA_DEBUG(PL_DEREGISTER, "Sending DEREGISTER to %s, try %i\n", 
buffer, pend->count);
-               pisa_send_control_packet_ipv6_type(cd_ctx.fd_control, 
&pend->entry->saddr_control, PISA_PKTTYPE_TUN_DEREGISTER);
+               pisa_send_control_packet_type(cd_ctx.fd_control, (struct 
sockaddr *)&pend->entry->saddr_control, PISA_PKTTYPE_TUN_DEREGISTER);
                return PISA_PENDING_RESCHEDULE;
        }
 }

Modified: trunk/pisacd/cdheartbeat.c
==============================================================================
--- trunk/pisacd/cdheartbeat.c  Thu Nov 26 14:45:56 2009        (r1804)
+++ trunk/pisacd/cdheartbeat.c  Thu Nov 26 14:50:58 2009        (r1805)
@@ -56,7 +56,7 @@
        inet_ntop(AF_INET6, &pend->key.addr.sin6_addr, buffer, sizeof(buffer));
        if (pend->entry->status == PISA_CON_CONNECTED) {
                PISA_DEBUG(PL_HEARTBEAT, "Sending HEARTBEAT to %s, try %i\n", 
buffer, pend->count);
-               pisa_send_control_packet_ipv6_type(cd_ctx.fd_control, 
&pend->entry->saddr_control, PISA_PKTTYPE_TUN_HEARTBEAT);
+               pisa_send_control_packet_type(cd_ctx.fd_control, (struct 
sockaddr *)&pend->entry->saddr_control, PISA_PKTTYPE_TUN_HEARTBEAT);
                return PISA_PENDING_RESCHEDULE;
        } else {
                PISA_DEBUG(PL_HEARTBEAT, "Skipping HEARTBEAT to %s, wrong 
status\n", buffer);

Modified: trunk/pisacd/cdregister.c
==============================================================================
--- trunk/pisacd/cdregister.c   Thu Nov 26 14:45:56 2009        (r1804)
+++ trunk/pisacd/cdregister.c   Thu Nov 26 14:50:58 2009        (r1805)
@@ -49,7 +49,7 @@
        pisa_set_packet_type(packet, PISA_PKTTYPE_TUN_REGISTER);
        pisa_set_packet_length(packet, sizeof(pisa_packet_common) + 
sizeof(pisa_payload_register));
 
-       pisa_send_control_packet_ipv6(cd_ctx.fd_control, &pend->key.addr, 
packet);
+       pisa_send_control_packet(cd_ctx.fd_control, (struct sockaddr 
*)&pend->key.addr, packet);
        pisa_free_msg(packet);
        return PISA_PENDING_RESCHEDULE;
 }

Modified: trunk/pisasd/sdderegister.c
==============================================================================
--- trunk/pisasd/sdderegister.c Thu Nov 26 14:45:56 2009        (r1804)
+++ trunk/pisasd/sdderegister.c Thu Nov 26 14:50:58 2009        (r1805)
@@ -35,5 +35,5 @@
        } else {
                PISA_DEBUG(PL_STATEMACHINE|PL_DEREGISTER, "Deregister from 
unconnected client %s\n", buffer);
        }
-       pisa_send_control_packet_ipv6_type(sd_ctx.fd_control, addr, 
PISA_PKTTYPE_TUN_DEREGISTER_ACK);
+       pisa_send_control_packet_type(sd_ctx.fd_control, (struct sockaddr 
*)addr, PISA_PKTTYPE_TUN_DEREGISTER_ACK);
 }

Modified: trunk/pisasd/sdheartbeat.c
==============================================================================
--- trunk/pisasd/sdheartbeat.c  Thu Nov 26 14:45:56 2009        (r1804)
+++ trunk/pisasd/sdheartbeat.c  Thu Nov 26 14:50:58 2009        (r1805)
@@ -56,7 +56,7 @@
 
        if (e) {
                e->heartbeat_flag = true;
-               pisa_send_control_packet_ipv6_type(sd_ctx.fd_control, addr, 
PISA_PKTTYPE_TUN_HEARTBEAT_ACK);
+               pisa_send_control_packet_type(sd_ctx.fd_control, (struct 
sockaddr *)addr, PISA_PKTTYPE_TUN_HEARTBEAT_ACK);
                inet_ntop(AF_INET6, &addr->sin6_addr, buffer, sizeof(buffer));
                PISA_INFO("Heartbeat from client %s\n", buffer);
        }

Modified: trunk/pisasd/sdregister.c
==============================================================================
--- trunk/pisasd/sdregister.c   Thu Nov 26 14:45:56 2009        (r1804)
+++ trunk/pisasd/sdregister.c   Thu Nov 26 14:50:58 2009        (r1805)
@@ -33,7 +33,7 @@
        pisa_set_packet_type(packet, PISA_PKTTYPE_TUN_REGISTER_ACK);
        pisa_set_packet_length(packet, sizeof(pisa_packet_common) + 
sizeof(pisa_payload_registerack));
 
-       pisa_send_control_packet_ipv6(sd_ctx.fd_control, &e->saddr_control, 
packet);
+       pisa_send_control_packet(sd_ctx.fd_control, (struct sockaddr 
*)&e->saddr_control, packet);
        pisa_free_msg(packet);
 }
 

Other related posts:

  • » [pisa-src] r1805 - in trunk: libpisa/packet.c libpisa/packet.h pisacd/cdderegister.c pisacd/cdheartbeat.c pisacd/cdregister.c pisasd/sdderegister.c pisasd/sdheartbeat.c pisasd/sdregister.c - Thomas Jansen