diff options
| author | Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> | 2002-10-06 03:39:33 -0500 |
|---|---|---|
| committer | Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> | 2002-10-06 03:39:33 -0500 |
| commit | 61fa33282c906f511e10f881322202f392cb2b4a (patch) | |
| tree | 3a7ee9ff42ebab03f5e145967d879272f36ec80a | |
| parent | 13fad342e35c20f8677d54ccb9bb281f6bce43c7 (diff) | |
ISDN: tidy up isdn_net_log_skb()
| -rw-r--r-- | drivers/isdn/i4l/isdn_net.c | 112 | ||||
| -rw-r--r-- | drivers/isdn/i4l/isdn_net_lib.c | 6 |
2 files changed, 34 insertions, 84 deletions
diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c index 932242b01748..88745cacf437 100644 --- a/drivers/isdn/i4l/isdn_net.c +++ b/drivers/isdn/i4l/isdn_net.c @@ -646,9 +646,6 @@ isdn_net_handle_event(isdn_net_dev *idev, int pr, void *arg) dbg_net_dial("%s: dialstate=%d pr=%#x\n", idev->name, idev->dialstate, pr); - if (pr == ISDN_STAT_DHUP) - return 1; // FIXME - switch (idev->dialstate) { case ST_ACTIVE: return isdn_net_event_active(idev, pr, arg); @@ -695,96 +692,49 @@ isdn_net_hangup(isdn_net_dev *idev) isdn_net_unbind_channel(idev); } -typedef struct { - unsigned short source; - unsigned short dest; -} ip_ports; static void isdn_net_log_skb(struct sk_buff *skb, isdn_net_dev *idev) { - isdn_net_local *mlp = idev->mlp; - - u_char *p = skb->nh.raw; /* hopefully, this was set correctly */ + unsigned char *p = skb->nh.raw; /* hopefully, this was set correctly */ unsigned short proto = ntohs(skb->protocol); int data_ofs; - ip_ports *ipp; + struct ip_ports { + unsigned short source; + unsigned short dest; + } *ipp; char addinfo[100]; - addinfo[0] = '\0'; - /* This check stolen from 2.1.72 dev_queue_xmit_nit() */ - if (skb->nh.raw < skb->data || skb->nh.raw >= skb->tail) { - /* fall back to old isdn_net_log_packet method() */ - char * buf = skb->data; - - printk(KERN_DEBUG "isdn_net: protocol %04x is buggy, dev %s\n", skb->protocol, idev->name); - p = buf; - proto = ETH_P_IP; - switch (mlp->p_encap) { - case ISDN_NET_ENCAP_IPTYP: - proto = ntohs(*(unsigned short *) &buf[0]); - p = &buf[2]; - break; - case ISDN_NET_ENCAP_ETHER: - proto = ntohs(*(unsigned short *) &buf[12]); - p = &buf[14]; - break; - case ISDN_NET_ENCAP_CISCOHDLC: - proto = ntohs(*(unsigned short *) &buf[2]); - p = &buf[4]; - break; - case ISDN_NET_ENCAP_SYNCPPP: - proto = ntohs(skb->protocol); - p = &buf[IPPP_MAX_HEADER]; - break; - } - } data_ofs = ((p[0] & 15) * 4); switch (proto) { - case ETH_P_IP: - switch (p[9]) { - case 1: - strcpy(addinfo, " ICMP"); - break; - case 2: - strcpy(addinfo, " IGMP"); - break; - case 4: - strcpy(addinfo, " IPIP"); - break; - case 6: - ipp = (ip_ports *) (&p[data_ofs]); - sprintf(addinfo, " TCP, port: %d -> %d", ntohs(ipp->source), - ntohs(ipp->dest)); - break; - case 8: - strcpy(addinfo, " EGP"); - break; - case 12: - strcpy(addinfo, " PUP"); - break; - case 17: - ipp = (ip_ports *) (&p[data_ofs]); - sprintf(addinfo, " UDP, port: %d -> %d", ntohs(ipp->source), - ntohs(ipp->dest)); - break; - case 22: - strcpy(addinfo, " IDP"); - break; - } - printk(KERN_INFO - "OPEN: %d.%d.%d.%d -> %d.%d.%d.%d%s\n", - - p[12], p[13], p[14], p[15], - p[16], p[17], p[18], p[19], - addinfo); + case ETH_P_IP: + switch (p[9]) { + case IPPROTO_ICMP: + strcpy(addinfo, "ICMP"); break; - case ETH_P_ARP: - printk(KERN_INFO - "OPEN: ARP %d.%d.%d.%d -> *.*.*.* ?%d.%d.%d.%d\n", - p[14], p[15], p[16], p[17], - p[24], p[25], p[26], p[27]); + case IPPROTO_TCP: + case IPPROTO_UDP: + ipp = (struct ip_ports *) (&p[data_ofs]); + sprintf(addinfo, "%s, port: %d -> %d", + p[9] == IPPROTO_TCP ? "TCP" : "UDP", + ntohs(ipp->source), ntohs(ipp->dest)); break; + default: + sprintf(addinfo, "type %d", p[9]); + } + printk(KERN_INFO + "OPEN: %u.%u.%u.%u -> %u.%u.%u.%u %s\n", + + NIPQUAD(*(u32 *)(p + 12)), NIPQUAD(*(u32 *)(p + 16)), + addinfo); + break; + case ETH_P_ARP: + printk(KERN_INFO + "OPEN: ARP %d.%d.%d.%d -> *.*.*.* ?%d.%d.%d.%d\n", + NIPQUAD(*(u32 *)(p + 14)), NIPQUAD(*(u32 *)(p + 24))); + break; + default: + printk(KERN_INFO "OPEN: unknown proto %#x\n", proto); } } diff --git a/drivers/isdn/i4l/isdn_net_lib.c b/drivers/isdn/i4l/isdn_net_lib.c index 2851656a5c7d..b35a93acba7e 100644 --- a/drivers/isdn/i4l/isdn_net_lib.c +++ b/drivers/isdn/i4l/isdn_net_lib.c @@ -271,9 +271,9 @@ isdn_net_addif(char *name, isdn_net_local *mlp) mlp->onhtime = 10; mlp->dialmax = 1; mlp->flags = ISDN_NET_CBHUP | ISDN_NET_DM_MANUAL; - mlp->cbdelay = 5 * HZ; /* Wait 5 secs before Callback */ - mlp->dialtimeout = 60 * HZ;/* Wait 1 min for connection */ - mlp->dialwait = 5 * HZ; /* Wait 5 sec. after failed dial */ + mlp->cbdelay = 5 * HZ; /* Wait 5 secs before call-back */ + mlp->dialtimeout = 60 * HZ;/* Wait 1 min for connection */ + mlp->dialwait = 5 * HZ; /* Wait 5 sec. after failed dial */ INIT_LIST_HEAD(&mlp->phone[0]); INIT_LIST_HEAD(&mlp->phone[1]); dev = &mlp->dev; |
