ifconfig patch
Brooks Davis
brooks at FreeBSD.org
Thu Sep 20 17:39:29 PDT 2007
On Fri, Sep 21, 2007 at 11:54:27AM +1200, Andrew Thompson wrote:
> Hi,
>
>
> I have been digging into why the edsc module wasnt being loaded by
> ifconfig and now have a patch.
>
> A few printfs showed the problem.
>
> # ifconfig edsc0 create
> ifmaybeload(edsc0)
> trying to find if_edsc or edsc0
> found @ ed
>
> Its comparing using the string length of the module name so any partial
> matches are going through. I have changed it so it strips the number
> from the interface name and uses the full string to match.
>
> I want to ask re@ soon so any feedback would be great.
Conceptually the patch seems right. A couple comments below (I saw the strlcpy
change).
-- Brooks
> Index: ifconfig.c
> ===================================================================
> RCS file: /home/ncvs/src/sbin/ifconfig/ifconfig.c,v
> retrieving revision 1.133
> diff -u -p -r1.133 ifconfig.c
> --- ifconfig.c 13 Jun 2007 18:07:59 -0000 1.133
> +++ ifconfig.c 20 Sep 2007 23:47:28 -0000
> @@ -897,7 +897,7 @@ ifmaybeload(const char *name)
> {
> struct module_stat mstat;
> int fileid, modid;
> - char ifkind[35], *dp;
> + char ifkind[35], ifname[32], *dp;
> const char *cp;
Any reason ifname[32] shouldn't be ifname[IF_NAMESIZE]?
> /* loading suppressed by the user */
> @@ -911,6 +911,12 @@ ifmaybeload(const char *name)
> *dp = *cp;
> *dp = 0;
>
> + /* trim the interface number off the end */
> + strcpy(ifname, name);
> + for (dp = ifname; *dp != 0; dp++)
> + if (isdigit(*dp))
> + *dp = '\0';
> +
Should the if statement terminate the loop?
> /* scan files in kernel */
> mstat.version = sizeof(struct module_stat);
> for (fileid = kldnext(0); fileid > 0; fileid = kldnext(fileid)) {
> @@ -926,8 +932,8 @@ ifmaybeload(const char *name)
> cp = mstat.name;
> }
> /* already loaded? */
> - if (strncmp(name, cp, strlen(cp)) == 0 ||
> - strncmp(ifkind, cp, strlen(cp)) == 0)
> + if (strncmp(ifname, cp, strlen(ifname)) == 0 ||
> + strncmp(ifkind, cp, strlen(ifkind)) == 0)
> return;
> }
> }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20070921/fa01d21a/attachment.pgp
More information about the freebsd-net
mailing list