[zaptel-commits] trunk r1053 - in /trunk: zaptel.c zaptel.conf.sample zaptel.h ztcfg.c

zaptel-commits at lists.digium.com zaptel-commits at lists.digium.com
Thu May 11 15:50:08 MST 2006


Author: tilghman
Date: Thu May 11 17:50:08 2006
New Revision: 1053

URL: http://svn.digium.com/view/zaptel?rev=1053&view=rev
Log:
Bug 6816 - Allow nethdlc device to take optional alternative name

Modified:
    trunk/zaptel.c
    trunk/zaptel.conf.sample
    trunk/zaptel.h
    trunk/ztcfg.c

Modified: trunk/zaptel.c
URL: http://svn.digium.com/view/zaptel/trunk/zaptel.c?rev=1053&r1=1052&r2=1053&view=diff
==============================================================================
--- trunk/zaptel.c (original)
+++ trunk/zaptel.c Thu May 11 17:50:08 2006
@@ -1320,6 +1320,26 @@
 #endif
 	return 0;
 }
+
+#ifdef LINUX26
+static int zt_register_hdlc_device(struct net_device *dev, const char *dev_name)
+{
+	int result;
+
+	if (dev_name && *dev_name) {
+		if ((result = dev_alloc_name(dev, dev_name)) < 0)
+			return result;
+	}
+	result = register_netdev(dev);
+	if (result != 0)
+		return -EIO;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,14)
+	if (netif_carrier_ok(dev))
+		netif_carrier_off(dev); /* no carrier until DCD goes up */
+#endif
+	return 0;
+}
+#endif
 
 #ifdef NEW_HDLC_INTERFACE
 static int zt_net_stop(struct net_device *dev)
@@ -3345,7 +3365,7 @@
 					dev_to_hdlc(chans[ch.chan]->hdlcnetdev->netdev)->xmit = zt_xmit;
 					spin_unlock_irqrestore(&chans[ch.chan]->lock, flags);
 					/* Briefly restore interrupts while we register the device */
-					res = register_hdlc_device(chans[ch.chan]->hdlcnetdev->netdev);
+					res = zt_register_hdlc_device(chans[ch.chan]->hdlcnetdev->netdev, ch.netdev_name);
 					spin_lock_irqsave(&chans[ch.chan]->lock, flags);
 				} else {
 					printk("Unable to allocate hdlc: *shrug*\n");

Modified: trunk/zaptel.conf.sample
URL: http://svn.digium.com/view/zaptel/trunk/zaptel.conf.sample?rev=1053&r1=1052&r2=1053&view=diff
==============================================================================
--- trunk/zaptel.conf.sample (original)
+++ trunk/zaptel.conf.sample Thu May 11 17:50:08 2006
@@ -105,7 +105,13 @@
 #             hardware.
 # "nethdlc" : The zaptel driver bundles the channels together into an
 #             hdlc network device, which in turn can be configured with
-#             sethdlc (available separately).
+#             sethdlc (available separately). In 2.6.x kernels you can also optionally
+#             pass the name for the network interface after the channel list.
+#             Syntax:
+#               nethdlc=<channel list>[:interface name]
+#             Use original names, don't use the names which have been already registered 
+#             in system e.g eth.
+#
 # "dacs"    : The zaptel driver cross connects the channels starting at
 #             the channel number listed at the end, after a colon
 # "dacsrbs" : The zaptel driver cross connects the channels starting at

Modified: trunk/zaptel.h
URL: http://svn.digium.com/view/zaptel/trunk/zaptel.h?rev=1053&r1=1052&r2=1053&view=diff
==============================================================================
--- trunk/zaptel.h (original)
+++ trunk/zaptel.h Thu May 11 17:50:08 2006
@@ -239,6 +239,7 @@
 int	master;		/* Master channel if sigtype is ZT_SLAVE */
 int	idlebits;	/* Idle bits (if this is a CAS channel) or
 			   channel to monitor (if this is DACS channel) */
+char netdev_name[16]; /*name for the hdlc network device*/
 } ZT_CHANCONFIG;
 
 typedef struct zt_sfconfig

Modified: trunk/ztcfg.c
URL: http://svn.digium.com/view/zaptel/trunk/ztcfg.c?rev=1053&r1=1052&r2=1053&view=diff
==============================================================================
--- trunk/ztcfg.c (original)
+++ trunk/ztcfg.c Thu May 11 17:50:08 2006
@@ -552,11 +552,15 @@
 				}
 			} else if (!strcasecmp(keyword, "nethdlc")) {
 				sig[x] = sigtype_to_str(ZT_SIG_HDLCNET);
+				memset(cc[x].netdev_name, 0, sizeof(cc[x].netdev_name));
 				if (master) {
 					cc[x].sigtype = ZT_SIG_SLAVE;
 					cc[x].master = master;
 				} else {
 					cc[x].sigtype = ZT_SIG_HDLCNET;
+					if (idle) {
+					    strncpy(cc[x].netdev_name, idle, sizeof(cc[x].netdev_name) - 1);
+					}
 					master = x;
 				}
 			} else if (!strcasecmp(keyword, "fcshdlc")) {



More information about the zaptel-commits mailing list