Hello,
Regarding to previous dvbnet tool retrieve from
http://www.linuxtv.org/download/dvb/linuxtv-dvb-1.1.1.tar.bz2 tarball, dvbnet
in actual Mercurial repository doesn't correctly report interface number when
adding new interface.
See attached patch to fix it.
Regards,
Stephane Este-Gracias
# HG changeset patch
# User Stephane Este-Gracias <[EMAIL PROTECTED]>
# Node ID 85670e7bdea85da9d44fb30f145f51d6ac0b82b8
# Parent 2265d5d5d989156037e10c3c29cb2dde2661dc6a
Fix interface number report for dvbnet_add_interface
diff -r 2265d5d5d989 -r 85670e7bdea8 lib/libdvbapi/dvbnet.c
--- a/lib/libdvbapi/dvbnet.c Wed Aug 30 18:01:34 2006 +0200
+++ b/lib/libdvbapi/dvbnet.c Wed Aug 30 19:28:44 2006 +0200
@@ -44,9 +44,10 @@ int dvbnet_open(int adapter, int netdevi
return fd;
}
-int dvbnet_add_interface(int fd, uint16_t pid, enum dvbnet_encap encapsulation)
+int dvbnet_add_interface(int fd, int *ifnum, uint16_t pid, enum dvbnet_encap encapsulation)
{
struct dvb_net_if params;
+ int status;
memset(¶ms, 0, sizeof(params));
params.pid = pid;
@@ -63,7 +64,11 @@ int dvbnet_add_interface(int fd, uint16_
default:
return -EINVAL;
}
- return ioctl(fd, NET_ADD_IF, ¶ms);
+
+ status = ioctl(fd, NET_ADD_IF, ¶ms);
+ *ifnum = params.if_num;
+
+ return status;
}
int dvbnet_get_interface(int fd, int ifnum, uint16_t *pid, enum dvbnet_encap *encapsulation)
diff -r 2265d5d5d989 -r 85670e7bdea8 lib/libdvbapi/dvbnet.h
--- a/lib/libdvbapi/dvbnet.h Wed Aug 30 18:01:34 2006 +0200
+++ b/lib/libdvbapi/dvbnet.h Wed Aug 30 19:28:44 2006 +0200
@@ -54,11 +54,12 @@ extern int dvbnet_open(int adapter, int
* Create a new DVBNET interface.
*
* @param fd FD opened with libdvbnet_open().
+ * @param ifnum Index of added interface.
* @param pid PID of the stream containing the network data.
* @param encapsulation Encapsulation type of the stream (one of DVBNET_ENCAP_*).
* @return 0 on success, nonzero on failure.
*/
-extern int dvbnet_add_interface(int fd, uint16_t pid, enum dvbnet_encap encapsulation);
+extern int dvbnet_add_interface(int fd, int *ifnum, uint16_t pid, enum dvbnet_encap encapsulation);
/**
* Get details of a DVBNET interface.
diff -r 2265d5d5d989 -r 85670e7bdea8 util/dvbnet/dvbnet.c
--- a/util/dvbnet/dvbnet.c Wed Aug 30 18:01:34 2006 +0200
+++ b/util/dvbnet/dvbnet.c Wed Aug 30 19:28:44 2006 +0200
@@ -87,7 +87,7 @@ int main(int argc, char **argv)
break;
case ADD_INTERFACE:
- if (dvbnet_add_interface(fd_net, pid, encapsulation))
+ if (dvbnet_add_interface(fd_net, &ifnum, pid, encapsulation))
fprintf(stderr,
"Error: couldn't add interface for pid %d: %d %m.\n",
pid, errno);
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb