patch-2.3.16 linux/net/irda/irlmp.c
Next file: linux/net/irda/irlmp_event.c
Previous file: linux/net/irda/irlap_frame.c
Back to the patch index
Back to the overall index
- Lines: 642
- Date:
Mon Aug 30 10:26:28 1999
- Orig file:
v2.3.15/linux/net/irda/irlmp.c
- Orig date:
Mon Jun 7 16:18:58 1999
diff -u --recursive --new-file v2.3.15/linux/net/irda/irlmp.c linux/net/irda/irlmp.c
@@ -6,7 +6,7 @@
* Status: Stable.
* Author: Dag Brattli <dagb@cs.uit.no>
* Created at: Sun Aug 17 20:54:32 1997
- * Modified at: Mon May 31 21:49:41 1999
+ * Modified at: Mon Aug 23 09:30:56 1999
* Modified by: Dag Brattli <dagb@cs.uit.no>
*
* Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>,
@@ -47,8 +47,9 @@
struct irlmp_cb *irlmp = NULL;
/* These can be altered by the sysctl interface */
-int sysctl_discovery = 0;
-int sysctl_discovery_slots = 6;
+int sysctl_discovery = 0;
+int sysctl_discovery_timeout = 3; /* 3 seconds by default */
+int sysctl_discovery_slots = 6; /* 6 slots by default */
char sysctl_devname[65];
char *lmp_reasons[] = {
@@ -61,7 +62,7 @@
"ERROR, NOT USED",
};
-__u8 *irlmp_hint_to_service( __u8 *hint);
+__u8 *irlmp_hint_to_service(__u8 *hint);
#ifdef CONFIG_PROC_FS
int irlmp_proc_read(char *buf, char **start, off_t offst, int len, int unused);
#endif
@@ -72,7 +73,7 @@
* Create (allocate) the main IrLMP structure and the pointer array
* which will contain pointers to each instance of a LSAP.
*/
-__initfunc(int irlmp_init(void))
+int __init irlmp_init(void)
{
/* Initialize the irlmp structure. */
if ( irlmp == NULL) {
@@ -98,7 +99,7 @@
/* Do discovery every 3 seconds */
init_timer(&irlmp->discovery_timer);
- irlmp_start_discovery_timer(irlmp, 600);
+ irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout*HZ);
return 0;
}
@@ -134,7 +135,7 @@
* Register with IrLMP and create a local LSAP,
* returns handle to LSAP.
*/
-struct lsap_cb *irlmp_open_lsap(__u8 slsap_sel, struct notify_t *notify)
+struct lsap_cb *irlmp_open_lsap(__u8 slsap_sel, notify_t *notify)
{
struct lsap_cb *self;
@@ -142,8 +143,6 @@
ASSERT(irlmp != NULL, return NULL;);
ASSERT(irlmp->magic == LMP_MAGIC, return NULL;);
- DEBUG(4, __FUNCTION__ "(), slsap_sel=%02x\n", slsap_sel);
-
/*
* Does the client care which Source LSAP selector it gets?
*/
@@ -264,13 +263,10 @@
* instances of the IrLAP layer, each connected to different IrDA ports
*
*/
-void irlmp_register_link(struct irlap_cb *irlap, __u32 saddr,
- struct notify_t *notify)
+void irlmp_register_link(struct irlap_cb *irlap, __u32 saddr, notify_t *notify)
{
struct lap_cb *lap;
- DEBUG(4, __FUNCTION__ "(), Registered IrLAP, saddr = %08x\n", saddr);
-
ASSERT(irlmp != NULL, return;);
ASSERT(irlmp->magic == LMP_MAGIC, return;);
ASSERT(notify != NULL, return;);
@@ -280,7 +276,7 @@
*/
lap = kmalloc(sizeof(struct lap_cb), GFP_KERNEL);
if (lap == NULL) {
- DEBUG(3, __FUNCTION__ "(), unable to kmalloc\n");
+ ERROR(__FUNCTION__ "(), unable to kmalloc\n");
return;
}
memset(lap, 0, sizeof(struct lap_cb));
@@ -349,20 +345,20 @@
struct lsap_cb *lsap;
discovery_t *discovery;
- ASSERT( self != NULL, return -1;);
- ASSERT( self->magic == LMP_LSAP_MAGIC, return -1;);
+ ASSERT(self != NULL, return -EBADR;);
+ ASSERT(self->magic == LMP_LSAP_MAGIC, return -EBADR;);
DEBUG(2, __FUNCTION__
"(), slsap_sel=%02x, dlsap_sel=%02x, saddr=%08x, daddr=%08x\n",
self->slsap_sel, dlsap_sel, saddr, daddr);
- if ( self->connected)
+ if (self->connected)
return -EISCONN;
-
+
/* Client must supply destination device address */
if (!daddr)
return -EINVAL;
-
+
/* Any userdata? */
if (userdata == NULL) {
skb = dev_alloc_skb(64);
@@ -480,11 +476,11 @@
* Service user is accepting connection
*
*/
-void irlmp_connect_response(struct lsap_cb *self, struct sk_buff *userdata)
+int irlmp_connect_response(struct lsap_cb *self, struct sk_buff *userdata)
{
- ASSERT(self != NULL, return;);
- ASSERT(self->magic == LMP_LSAP_MAGIC, return;);
- ASSERT(userdata != NULL, return;);
+ ASSERT(self != NULL, return -1;);
+ ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;);
+ ASSERT(userdata != NULL, return -1;);
self->connected = TRUE;
@@ -492,10 +488,12 @@
self->slsap_sel, self->dlsap_sel);
/* Make room for MUX control header ( 3 bytes) */
- ASSERT(skb_headroom(userdata) >= LMP_CONTROL_HEADER, return;);
+ ASSERT(skb_headroom(userdata) >= LMP_CONTROL_HEADER, return -1;);
skb_push(userdata, LMP_CONTROL_HEADER);
irlmp_do_lsap_event(self, LM_CONNECT_RESPONSE, userdata);
+
+ return 0;
}
/*
@@ -583,45 +581,43 @@
* The service user is requesting disconnection, this will not remove the
* LSAP, but only mark it as disconnected
*/
-void irlmp_disconnect_request(struct lsap_cb *self, struct sk_buff *userdata)
+int irlmp_disconnect_request(struct lsap_cb *self, struct sk_buff *userdata)
{
struct lsap_cb *lsap;
- DEBUG( 4, __FUNCTION__ "()\n");
-
- ASSERT( self != NULL, return;);
- ASSERT( self->magic == LMP_LSAP_MAGIC, return;);
+ ASSERT(self != NULL, return -1;);
+ ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;);
/* Already disconnected? */
- if ( !self->connected) {
- DEBUG( 1, __FUNCTION__ "(), already disconnected!\n");
- return;
+ if (!self->connected) {
+ WARNING(__FUNCTION__ "(), already disconnected!\n");
+ return -1;
}
- ASSERT( userdata != NULL, return;);
- ASSERT( self->connected == TRUE, return;);
+ ASSERT(userdata != NULL, return -1;);
+ ASSERT(self->connected == TRUE, return -1;);
- skb_push( userdata, LMP_CONTROL_HEADER);
+ skb_push(userdata, LMP_CONTROL_HEADER);
/*
* Do the event before the other stuff since we must know
* which lap layer that the frame should be transmitted on
*/
- irlmp_do_lsap_event( self, LM_DISCONNECT_REQUEST, userdata);
+ irlmp_do_lsap_event(self, LM_DISCONNECT_REQUEST, userdata);
/*
* Remove LSAP from list of connected LSAPs for the particular link
* and insert it into the list of unconnected LSAPs
*/
- ASSERT( self->lap != NULL, return;);
- ASSERT( self->lap->magic == LMP_LAP_MAGIC, return;);
- ASSERT( self->lap->lsaps != NULL, return;);
+ ASSERT(self->lap != NULL, return -1;);
+ ASSERT(self->lap->magic == LMP_LAP_MAGIC, return -1;);
+ ASSERT(self->lap->lsaps != NULL, return -1;);
lsap = hashbin_remove(self->lap->lsaps, (int) self, NULL);
- ASSERT( lsap != NULL, return;);
- ASSERT( lsap->magic == LMP_LSAP_MAGIC, return;);
- ASSERT( lsap == self, return;);
+ ASSERT(lsap != NULL, return -1;);
+ ASSERT(lsap->magic == LMP_LSAP_MAGIC, return -1;);
+ ASSERT(lsap == self, return -1;);
hashbin_insert(irlmp->unconnected_lsaps, (QUEUE *) self, (int) self,
NULL);
@@ -630,6 +626,8 @@
self->connected = FALSE;
self->dlsap_sel = LSAP_ANY;
self->lap = NULL;
+
+ return 0;
}
/*
@@ -642,14 +640,14 @@
{
struct lsap_cb *lsap;
- DEBUG( 1, __FUNCTION__ "(), reason=%s\n", lmp_reasons[reason]);
+ DEBUG(1, __FUNCTION__ "(), reason=%s\n", lmp_reasons[reason]);
- ASSERT( self != NULL, return;);
- ASSERT( self->magic == LMP_LSAP_MAGIC, return;);
- ASSERT( self->connected == TRUE, return;);
+ ASSERT(self != NULL, return;);
+ ASSERT(self->magic == LMP_LSAP_MAGIC, return;);
+ ASSERT(self->connected == TRUE, return;);
- DEBUG( 3, __FUNCTION__ "(), slsap_sel=%02x, dlsap_sel=%02x\n",
- self->slsap_sel, self->dlsap_sel);
+ DEBUG(3, __FUNCTION__ "(), slsap_sel=%02x, dlsap_sel=%02x\n",
+ self->slsap_sel, self->dlsap_sel);
self->connected = FALSE;
self->dlsap_sel = LSAP_ANY;
@@ -661,13 +659,13 @@
/*
* Remove association between this LSAP and the link it used
*/
- ASSERT( self->lap != NULL, return;);
- ASSERT( self->lap->lsaps != NULL, return;);
+ ASSERT(self->lap != NULL, return;);
+ ASSERT(self->lap->lsaps != NULL, return;);
- lsap = hashbin_remove( self->lap->lsaps, (int) self, NULL);
+ lsap = hashbin_remove(self->lap->lsaps, (int) self, NULL);
- ASSERT( lsap != NULL, return;);
- ASSERT( lsap == self, return;);
+ ASSERT(lsap != NULL, return;);
+ ASSERT(lsap == self, return;);
hashbin_insert(irlmp->unconnected_lsaps, (QUEUE *) lsap, (int) lsap,
NULL);
@@ -676,9 +674,9 @@
/*
* Inform service user
*/
- if ( self->notify.disconnect_indication) {
- self->notify.disconnect_indication( self->notify.instance,
- self, reason, userdata);
+ if (self->notify.disconnect_indication) {
+ self->notify.disconnect_indication(self->notify.instance,
+ self, reason, userdata);
}
}
@@ -692,8 +690,10 @@
{
struct lap_cb *lap;
- /* Make sure value is sane */
- if ((nslots != 1) && (nslots != 6) && (nslots != 8)&&(nslots != 16)) {
+ /* Make sure the value is sane */
+ if ((nslots != 1) && (nslots != 6) &&
+ (nslots != 8) && (nslots != 16))
+ {
printk(KERN_WARNING __FUNCTION__
"(), invalid value for number of slots!\n");
nslots = sysctl_discovery_slots = 8;
@@ -708,8 +708,9 @@
* end
*/
irlmp->discovery_cmd.charset = CS_ASCII;
- strncpy(irlmp->discovery_cmd.info, sysctl_devname, 31);
- irlmp->discovery_cmd.info_len = strlen(irlmp->discovery_cmd.info);
+ strncpy(irlmp->discovery_cmd.nickname, sysctl_devname,
+ NICKNAME_MAX_LEN);
+ irlmp->discovery_cmd.name_len = strlen(irlmp->discovery_cmd.nickname);
irlmp->discovery_cmd.nslots = nslots;
/*
@@ -740,21 +741,18 @@
*/
void irlmp_discovery_request(int nslots)
{
- DEBUG(4, __FUNCTION__ "(), nslots=%d\n", nslots);
-
/* Check if user wants to override the default */
if (nslots == DISCOVERY_DEFAULT_SLOTS)
nslots = sysctl_discovery_slots;
+ /* Return current cached discovery log */
+ irlmp_discovery_confirm(irlmp->cachelog);
+
/*
- * If discovery is already running, then just return the current
- * discovery log
+ * Start a single discovery operation if discovery is not already
+ * running
*/
- if (sysctl_discovery) {
- DEBUG(2, __FUNCTION__ "() discovery already running, so we"
- " just return the old discovery log!\n");
- irlmp_discovery_confirm(irlmp->cachelog);
- } else
+ if (!sysctl_discovery)
irlmp_do_discovery(nslots);
}
@@ -833,7 +831,11 @@
while (discovery != NULL) {
DEBUG(3, "discovery->daddr = 0x%08x\n", discovery->daddr);
- if (client->hint_mask & discovery->hints.word) {
+ /*
+ * Any common hint bits? Remember to mask away the extension
+ * bits ;-)
+ */
+ if (client->hint_mask & discovery->hints.word & 0x7f7f) {
if (client->callback1)
client->callback1(discovery);
}
@@ -889,8 +891,9 @@
*/
irlmp->discovery_rsp.charset = CS_ASCII;
- strncpy(irlmp->discovery_rsp.info, sysctl_devname, 31);
- irlmp->discovery_rsp.info_len = strlen(irlmp->discovery_rsp.info) + 2;
+ strncpy(irlmp->discovery_rsp.nickname, sysctl_devname,
+ NICKNAME_MAX_LEN);
+ irlmp->discovery_rsp.name_len = strlen(irlmp->discovery_rsp.nickname);
return &irlmp->discovery_rsp;
}
@@ -901,17 +904,16 @@
* Send some data to peer device
*
*/
-void irlmp_data_request(struct lsap_cb *self, struct sk_buff *skb)
+int irlmp_data_request(struct lsap_cb *self, struct sk_buff *skb)
{
- ASSERT(skb != NULL, return;);
- ASSERT(self != NULL, return;);
- ASSERT(self->magic == LMP_LSAP_MAGIC, return;);
+ ASSERT(self != NULL, return -1;);
+ ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;);
/* Make room for MUX header */
- ASSERT(skb_headroom( skb) >= LMP_HEADER, return;);
+ ASSERT(skb_headroom(skb) >= LMP_HEADER, return -1;);
skb_push(skb, LMP_HEADER);
-
- irlmp_do_lsap_event(self, LM_DATA_REQUEST, skb);
+
+ return irlmp_do_lsap_event(self, LM_DATA_REQUEST, skb);
}
/*
@@ -935,17 +937,17 @@
*
*
*/
-inline void irlmp_udata_request( struct lsap_cb *self, struct sk_buff *skb)
+inline void irlmp_udata_request(struct lsap_cb *self, struct sk_buff *skb)
{
- DEBUG( 4, __FUNCTION__ "()\n");
+ DEBUG(4, __FUNCTION__ "()\n");
- ASSERT( skb != NULL, return;);
+ ASSERT(skb != NULL, return;);
/* Make room for MUX header */
- ASSERT( skb_headroom( skb) >= LMP_HEADER, return;);
- skb_push( skb, LMP_HEADER);
+ ASSERT(skb_headroom(skb) >= LMP_HEADER, return;);
+ skb_push(skb, LMP_HEADER);
- irlmp_do_lsap_event( self, LM_UDATA_REQUEST, skb);
+ irlmp_do_lsap_event(self, LM_UDATA_REQUEST, skb);
}
/*
@@ -954,16 +956,16 @@
* Send unreliable data (but still within the connection)
*
*/
-void irlmp_udata_indication( struct lsap_cb *self, struct sk_buff *skb)
+void irlmp_udata_indication(struct lsap_cb *self, struct sk_buff *skb)
{
- DEBUG( 4, __FUNCTION__ "()\n");
+ DEBUG(4, __FUNCTION__ "()\n");
- ASSERT( self != NULL, return;);
- ASSERT( self->magic == LMP_LSAP_MAGIC, return;);
- ASSERT( skb != NULL, return;);
+ ASSERT(self != NULL, return;);
+ ASSERT(self->magic == LMP_LSAP_MAGIC, return;);
+ ASSERT(skb != NULL, return;);
/* Hide LMP header from layer above */
- skb_pull( skb, LMP_HEADER);
+ skb_pull(skb, LMP_HEADER);
if (self->notify.udata_indication)
self->notify.udata_indication(self->notify.instance, self, skb);
@@ -986,19 +988,19 @@
*
*
*/
-void irlmp_connectionless_data_indication( struct sk_buff *skb)
+void irlmp_connectionless_data_indication(struct sk_buff *skb)
{
DEBUG( 1, __FUNCTION__ "()\n");
}
void irlmp_status_request(void)
{
- DEBUG( 1, "irlmp_status_request(), Not implemented\n");
+ DEBUG(0, __FUNCTION__ "(), Not implemented\n");
}
void irlmp_status_indication(LINK_STATUS link, LOCK_STATUS lock)
{
- DEBUG( 4, "irlmp_status_indication(), Not implemented\n");
+ DEBUG(1, __FUNCTION__ "(), Not implemented\n");
}
/*
@@ -1016,31 +1018,32 @@
* Allocate array to store services in. 16 entries should be safe
* since we currently only support 2 hint bytes
*/
- service = kmalloc( 16, GFP_ATOMIC);
- if ( !service) {
+ service = kmalloc(16, GFP_ATOMIC);
+ if (!service) {
DEBUG(1, __FUNCTION__ "(), Unable to kmalloc!\n");
return NULL;
}
- if ( !hint[0]) {
+ if (!hint[0]) {
DEBUG(1, "<None>\n");
+ kfree(service);
return NULL;
}
- if ( hint[0] & HINT_PNP)
+ if (hint[0] & HINT_PNP)
DEBUG(1, "PnP Compatible ");
- if ( hint[0] & HINT_PDA)
+ if (hint[0] & HINT_PDA)
DEBUG(1, "PDA/Palmtop ");
- if ( hint[0] & HINT_COMPUTER)
+ if (hint[0] & HINT_COMPUTER)
DEBUG(1, "Computer ");
- if ( hint[0] & HINT_PRINTER) {
+ if (hint[0] & HINT_PRINTER) {
DEBUG(1, "Printer ");
service[i++] = S_PRINTER;
}
- if ( hint[0] & HINT_MODEM)
+ if (hint[0] & HINT_MODEM)
DEBUG(1, "Modem ");
- if ( hint[0] & HINT_FAX)
+ if (hint[0] & HINT_FAX)
DEBUG(1, "Fax ");
- if ( hint[0] & HINT_LAN) {
+ if (hint[0] & HINT_LAN) {
DEBUG(1, "LAN Access ");
service[i++] = S_LAN;
}
@@ -1049,18 +1052,18 @@
* there, but this is not really required by the standard.
* (IrLMP p. 29)
*/
- if ( hint[0] & HINT_EXTENSION) {
- if ( hint[1] & HINT_TELEPHONY) {
+ if (hint[0] & HINT_EXTENSION) {
+ if (hint[1] & HINT_TELEPHONY) {
DEBUG(1, "Telephony ");
service[i++] = S_TELEPHONY;
- } if ( hint[1] & HINT_FILE_SERVER)
+ } if (hint[1] & HINT_FILE_SERVER)
DEBUG(1, "File Server ");
- if ( hint[1] & HINT_COMM) {
+ if (hint[1] & HINT_COMM) {
DEBUG(1, "IrCOMM ");
service[i++] = S_COMM;
}
- if ( hint[1] & HINT_OBEX) {
+ if (hint[1] & HINT_OBEX) {
DEBUG(1, "IrOBEX ");
service[i++] = S_OBEX;
}
@@ -1296,16 +1299,16 @@
*
* Check if the given source LSAP selector is in use
*/
-int irlmp_slsap_inuse( __u8 slsap_sel)
+int irlmp_slsap_inuse(__u8 slsap_sel)
{
struct lsap_cb *self;
struct lap_cb *lap;
- ASSERT( irlmp != NULL, return TRUE;);
- ASSERT( irlmp->magic == LMP_MAGIC, return TRUE;);
- ASSERT( slsap_sel != LSAP_ANY, return TRUE;);
+ ASSERT(irlmp != NULL, return TRUE;);
+ ASSERT(irlmp->magic == LMP_MAGIC, return TRUE;);
+ ASSERT(slsap_sel != LSAP_ANY, return TRUE;);
- DEBUG( 4, __FUNCTION__ "()\n");
+ DEBUG(4, __FUNCTION__ "()\n");
/* Valid values are between 0 and 127 */
if (slsap_sel > 127)
@@ -1324,16 +1327,14 @@
while (self != NULL) {
ASSERT(self->magic == LMP_LSAP_MAGIC, return TRUE;);
- if ((self->slsap_sel == slsap_sel))/* && */
-/* ( self->dlsap_sel == LSAP_ANY)) */
- {
- DEBUG( 4, "Source LSAP selector=%02x in use\n",
- self->slsap_sel);
+ if ((self->slsap_sel == slsap_sel)) {
+ DEBUG(4, "Source LSAP selector=%02x in use\n",
+ self->slsap_sel);
return TRUE;
}
- self = (struct lsap_cb*) hashbin_get_next( lap->lsaps);
+ self = (struct lsap_cb*) hashbin_get_next(lap->lsaps);
}
- lap = (struct lap_cb *) hashbin_get_next( irlmp->links);
+ lap = (struct lap_cb *) hashbin_get_next(irlmp->links);
}
return FALSE;
}
@@ -1399,12 +1400,12 @@
case LAP_FOUND_NONE:
case LAP_MEDIA_BUSY:
case LAP_PRIMARY_CONFLICT:
- DEBUG( 1, __FUNCTION__ "(), LAP_FOUND_NONE, LAP_MEDIA_BUSY or LAP_PRIMARY_CONFLICT\n");
+ DEBUG(1, __FUNCTION__ "(), LAP_FOUND_NONE, LAP_MEDIA_BUSY or LAP_PRIMARY_CONFLICT\n");
reason = LM_CONNECT_FAILURE;
break;
default:
- DEBUG( 1, __FUNCTION__
- "(), Unknow IrLAP disconnect reason %d!\n", lap_reason);
+ DEBUG(1, __FUNCTION__
+ "(), Unknow IrLAP disconnect reason %d!\n", lap_reason);
reason = LM_LAP_DISCONNECT;
break;
}
@@ -1414,8 +1415,6 @@
__u32 irlmp_get_saddr(struct lsap_cb *self)
{
- DEBUG(3, __FUNCTION__ "()\n");
-
ASSERT(self != NULL, return 0;);
ASSERT(self->lap != NULL, return 0;);
@@ -1424,8 +1423,6 @@
__u32 irlmp_get_daddr(struct lsap_cb *self)
{
- DEBUG(3, __FUNCTION__ "()\n");
-
ASSERT(self != NULL, return 0;);
ASSERT(self->lap != NULL, return 0;);
@@ -1455,21 +1452,21 @@
len += sprintf( buf+len, "Unconnected LSAPs:\n");
self = (struct lsap_cb *) hashbin_get_first( irlmp->unconnected_lsaps);
- while ( self != NULL) {
- ASSERT( self->magic == LMP_LSAP_MAGIC, return 0;);
- len += sprintf( buf+len, "lsap state: %s, ",
- irlsap_state[ self->lsap_state]);
- len += sprintf( buf+len,
- "slsap_sel: %#02x, dlsap_sel: %#02x, ",
- self->slsap_sel, self->dlsap_sel);
- len += sprintf( buf+len, "(%s)", self->notify.name);
- len += sprintf( buf+len, "\n");
+ while (self != NULL) {
+ ASSERT(self->magic == LMP_LSAP_MAGIC, return 0;);
+ len += sprintf(buf+len, "lsap state: %s, ",
+ irlsap_state[ self->lsap_state]);
+ len += sprintf(buf+len,
+ "slsap_sel: %#02x, dlsap_sel: %#02x, ",
+ self->slsap_sel, self->dlsap_sel);
+ len += sprintf(buf+len, "(%s)", self->notify.name);
+ len += sprintf(buf+len, "\n");
- self = ( struct lsap_cb *) hashbin_get_next(
+ self = (struct lsap_cb *) hashbin_get_next(
irlmp->unconnected_lsaps);
}
- len += sprintf( buf+len, "\nRegistred Link Layers:\n");
+ len += sprintf(buf+len, "\nRegistred Link Layers:\n");
lap = (struct lap_cb *) hashbin_get_first(irlmp->links);
while (lap != NULL) {
@@ -1480,8 +1477,8 @@
lap->saddr, lap->daddr);
len += sprintf(buf+len, "\n");
- len += sprintf( buf+len, "\nConnected LSAPs:\n");
- self = (struct lsap_cb *) hashbin_get_first( lap->lsaps);
+ len += sprintf(buf+len, "\nConnected LSAPs:\n");
+ self = (struct lsap_cb *) hashbin_get_first(lap->lsaps);
while (self != NULL) {
ASSERT(self->magic == LMP_LSAP_MAGIC, return 0;);
len += sprintf(buf+len, "lsap state: %s, ",
@@ -1500,8 +1497,8 @@
lap = (struct lap_cb *) hashbin_get_next(irlmp->links);
}
- restore_flags( flags);
-
+ restore_flags(flags);
+
return len;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)