Warnings purge
[people/xl0/gpxe.git] / src / proto / igmp.c
index 17dae33..d61f6c4 100644 (file)
@@ -3,10 +3,11 @@
  *
  */
 
-#include "ip.h"
-#include "igmp.h"
-#include "nic.h"
-#include "etherboot.h"
+#include <ip.h>
+#include <igmp.h>
+#include <background.h>
+#include <nic.h>
+#include <etherboot.h>
 
 static unsigned long last_igmpv1 = 0;
 static struct igmptable_t igmptable[MAX_IGMP];
@@ -49,14 +50,14 @@ static void send_igmp_reports ( unsigned long now ) {
                igmp.igmp.chksum = ipchksum ( &igmp.igmp,
                                              sizeof ( igmp.igmp ) );
                ip_transmit ( sizeof ( igmp ), &igmp );
-               DBG ( "IGMP sent report to %@\n",
-                     igmp.igmp.group.s_addr );
+               DBG ( "IGMP sent report to %s\n", inet_ntoa ( igmp.igmp.group ) );
                /* Don't send another igmp report until asked */
                igmptable[i].time = 0;
        }
 }
 
-static void process_igmp ( struct iphdr *ip, unsigned long now ) {
+static void process_igmp ( unsigned long now, unsigned short ptype __unused,
+                          struct iphdr *ip ) {
        struct igmp *igmp;
        int i;
        unsigned iplen;
@@ -82,7 +83,7 @@ static void process_igmp ( struct iphdr *ip, unsigned long now ) {
                        interval = ( igmp->response_time * TICKS_PER_SEC ) /10;
                }
                
-               DBG ( "IGMP received query for %@\n", igmp->group.s_addr );
+               DBG ( "IGMP received query for %s\n", inet_ntoa ( igmp->group ) );
                for ( i = 0 ; i < MAX_IGMP ; i++ ) {
                        uint32_t group = igmptable[i].group.s_addr;
                        if ( ( group == 0 ) ||
@@ -99,7 +100,8 @@ static void process_igmp ( struct iphdr *ip, unsigned long now ) {
        if ( ( ( igmp->type == IGMPv1_REPORT ) ||
               ( igmp->type == IGMPv2_REPORT ) ) &&
             ( ip->dest.s_addr == igmp->group.s_addr ) ) {
-               DBG ( "IGMP received report for %@\n", igmp->group.s_addr);
+               DBG ( "IGMP received report for %s\n", 
+                     inet_ntoa ( igmp->group ) );
                for ( i = 0 ; i < MAX_IGMP ; i++ ) {
                        if ( ( igmptable[i].group.s_addr ==
                               igmp->group.s_addr ) &&
@@ -110,6 +112,11 @@ static void process_igmp ( struct iphdr *ip, unsigned long now ) {
        }
 }
 
+struct background igmp_background __background = {
+       .send = send_igmp_reports,
+       .process = process_igmp,
+};
+
 void leave_group ( int slot ) {
        /* Be very stupid and always send a leave group message if 
         * I have subscribed.  Imperfect but it is standards
@@ -135,7 +142,7 @@ void leave_group ( int slot ) {
                igmp.igmp.group.s_addr = igmptable[slot].group.s_addr;
                igmp.igmp.chksum = ipchksum ( &igmp.igmp, sizeof ( igmp ) );
                ip_transmit ( sizeof ( igmp ), &igmp );
-               DBG ( "IGMP left group %@\n", igmp.igmp.group.s_addr );
+               DBG ( "IGMP left group %s\n", inet_ntoa ( igmp.igmp.group ) );
        }
        memset ( &igmptable[slot], 0, sizeof ( igmptable[0] ) );
 }
@@ -157,4 +164,3 @@ void join_group ( int slot, unsigned long group ) {
                igmptable[slot].time = currticks();
        }
 }
-