# Howl ?

## m4rqz

I was just chill-surfing around when I landed on the HOWL website and I figured I'll give it a shot. But I'm not sure how sable etc. it is or how hard it is to install on my gentoo system. Is there a HOWTO page or something on getting this thing up and running?

btw: I use gnome/nautilus (saying this b/c I noticed that nautilus have IUSE for howl. )

edit: nautilus does not have IUSE for howl, but gnome-vfs doesLast edited by m4rqz on Thu Jun 30, 2005 2:53 pm; edited 1 time in total

----------

## catzooka

I haven't found a good use for howl aside from the fact that it can be used to set up an iTunes server on your linux box. Here's the link to the gentoo-wiki how-to on how to do that http://gentoo-wiki.com/HOWTO_Apple_ITunes_Server. Otherwise, I'd be interested as well in some other applications of howl in linux.

----------

## m4rqz

yeah, i don't know alot about it either .. but im running gentoo on a laptop and im switching networks alot and my friends have apple computers, and since howl apparantly is rendezvous compatible i thought it would be a good idea.. we'll see. 

thx

----------

## drawsmcgraw

From what I can gather, it seems that their [waves hands in air] *ultimate goal* is a neat & easy way for a bunch of machines, regardless of platform, to communicate with eachother. I'm thinking this whole Zeroconf thing could eventually be competition for Samba (or maybe I'm completely off my rocker). I found one decent article that explains the zeroconf protocol fairly well and he has a small network set up (including a Gentoo box!) to test out just how well it works with Howl as the implementation, complete with Ethereal network analysis.

http://www.supinfo-projects.com/en/2004/yaubi%5Fzeroconf2/

Please note, I have absolutely no idea how to even begin using Howl or any other implementation of zeroconf. I just found out about it today and I'm not at my Gentoo box to even check the portage tree!

----------

## ikke

 *drawsmcgraw wrote:*   

> From what I can gather, it seems that their [waves hands in air] *ultimate goal* is a neat & easy way for a bunch of machines, regardless of platform, to communicate with eachother. I'm thinking this whole Zeroconf thing could eventually be competition for Samba (or maybe I'm completely off my rocker). I found one decent article that explains the zeroconf protocol fairly well and he has a small network set up (including a Gentoo box!) to test out just how well it works with Howl as the implementation, complete with Ethereal network analysis.
> 
> http://www.supinfo-projects.com/en/2004/yaubi%5Fzeroconf2/
> 
> Please note, I have absolutely no idea how to even begin using Howl or any other implementation of zeroconf. I just found out about it today and I'm not at my Gentoo box to even check the portage tree!

 Hell no, samba is an implementation of the SMB protocol.

Zeroconf is only used to discover hosts and services, so it's rather a replacement for NetBIOS

----------

## m4rqz

yeah, ikke you're right.

----------

## drawsmcgraw

Ah, I see now. I guess a little more research is in the future for me, then.  :Embarassed: 

Anyone have any personal experience with Zeroconf? Howl in particular?

----------

## m4rqz

I have installed it, but I haven't been connected to anyone else since I then, so I can't say anything

----------

## ikke

 *drawsmcgraw wrote:*   

> Ah, I see now. I guess a little more research is in the future for me, then. 
> 
> Anyone have any personal experience with Zeroconf? Howl in particular?

 

Yeah, I've been playing around with mDNS lately.

Results:

- Howl is not nice. It needs its own mainloop, so you can only use when your app can block. I did put the blocking part in a separate thread, using a GMainLoop in my main thread, which did work, but crashed on sw_discovery cleanup whenever I did a g_print in my main thread.

- Avahi is much nicer, works reasonalbly fine, although the current API, avahi-core, is much too low-level, so it's not advised to create applications now using avahi, unless the public API is finished. Development is going fine at the moment though.

- Apple's implementation is for some reason not free( I'm not a license expert, so dont ask me why). AFAIK its also blocking.

Here's a little screenie of some Howl work:

http://www.eikke.com/files/howl-fun.png

Using avahi-core:

http://www.eikke.com/files/mdns-talk.png

----------

## drawsmcgraw

Very cool, Ikke. I have some time this summer so I think I'll look into both of those and see what I can come up with. Anyone know of any other Linux implementations of ZeroConf?

----------

## ikke

 *drawsmcgraw wrote:*   

> Very cool, Ikke. I have some time this summer so I think I'll look into both of those and see what I can come up with. Anyone know of any other Linux implementations of ZeroConf?

 If you are willing to work on mDNS stuff, please join avahi development so a great lib can emerge there  :Wink: 

----------

## drawsmcgraw

I wish I was that good, Ikke. At this point, though, I'm just a user. I plan on playing with ZeroConf a pretty good bit in the next few months, though.

----------

## ikke

 *drawsmcgraw wrote:*   

> I wish I was that good, Ikke. At this point, though, I'm just a user. I plan on playing with ZeroConf a pretty good bit in the next few months, though.

 Actually you dont need to know that much, just some C. Currently avahi-core is working quite well, what should be done is writing a client API that hides the lowlevel stuff for the developer, so you dont need 50 lines of code to do something you can do in 10 lines using Howl.

Oh, and bug fixing of course  :Wink: 

----------

## drawsmcgraw

I would love to, but my schedule mandates otherwise. Sorry. If I can get anything noteworthy going on with zeroConf / Howl / Bonjour I'll be sure it makes it to this thread.

----------

## drawsmcgraw

Anyone know where exactly Howl stores its logs? I'm guessing it's the same place that *any* program would store its logs but... I don't really know where that is either  :Sad: 

----------

## ikke

 *drawsmcgraw wrote:*   

> Anyone know where exactly Howl stores its logs? I'm guessing it's the same place that *any* program would store its logs but... I don't really know where that is either 

 You mean where mDNSResponders stores them? You can run it from CLI using the debug flag... Dont think it logs something otherwise

----------

## drawsmcgraw

Yeah, I was playing with autoipd in particular and I ran it with the debug flag but it doesn't say much. It gives one message saying that it's starting up. No information on what IP it chose or if it ran into any problems. A glance at the source code makes me think it's logging it elsewhere or there are messages coming up and I'm just looking in the wrong place. All the lines that looked like debugging output began with 

```

sw_debug(SW_LOG_VERBOSE......

```

That was in the file autoip/autoip.c.

I grep'ed for the only message that comes up when I run autoipd in debug mode and found the file responsible for the one line that outputs it to the CLI (the name of the file escapes me at the moment). So I changed all of those in the autoip.c file above to

```

sw_debug(SW_LOG_NOTICE......

```

And oua-la! I now have an idea of what's going on when I run autoipd. It's really ghetto, I know, and I'm probably doing it incorrectly, but it works for me  :Wink: 

EDIT:

The file that displays the "autoipd starting up...." message is src/autoipd/Posix/posix_main.c. That's where I stole the SW_LOG_NOTICE thingy

----------

## ikke

 *drawsmcgraw wrote:*   

> ...

 Find the implementation of sw_debug and figure out what that does?

----------

## drawsmcgraw

I was trying for that, but the API docs had nothing and grepping all over the place didn't do much either. I kinda like the new ghetto verbose mode, anyway  :Smile: 

----------

## ikke

include/salt/debug.h:

```
#if !defined(NDEBUG)

void HOWL_API

sw_print_debug(

                int                                     level,

                sw_const_string format,

                ...);

#       if (__C99_VA_ARGS__)

#               define  sw_debug(...)                   sw_print_debug(__VA_ARGS__)

#       else

#               define  sw_debug                                        sw_print_debug

#       endif

#else

#       if (__C99_VA_ARGS__)

#               define  sw_debug(...)

#       else

#               define  sw_debug                                        while (0/*CONSTCOND*/)

#       endif

#endif

#define SW_UNUSED_PARAM(X)      (void) (X)

#if defined(__cplusplus)

}

#endif

#endif

```

Which tells us sw_debug is at any time expanded as sw_print_debug(int, const char *,...)

src/lib/howl/debug.c:

```
void

sw_print_debug(

                int                                     level,

                sw_const_string format,

                ...)

{

        if (level <= g_debug_level)

        {

                char            buffer1[1024];

                char            buffer2[1024];

                va_list args;

                va_start(args, format);

                vsprintf(buffer1, format, args);

                va_end(args);

                if (buffer1[strlen(buffer1) - 1] == '\n')

                {

                        buffer1[strlen(buffer1) - 1] = '\0';

                }

#if defined(WIN32)

                sprintf(buffer2, "[%s] %s (%d)\n", g_component, buffer1, GetCurrentThreadId());

#else

                sprintf(buffer2, "[%s] %s (%d)\n", g_component, buffer1, getpid());

#endif

                fprintf(stderr, buffer2);

#if defined(WIN32)

                OutputDebugString(buffer2);

#endif

        }

}

```

So: only logging to stderr, no file based logging.

----------

## drawsmcgraw

I bow down to your slueth work, Ikke. I couldn't have done that kind of detective work on my own (but I understand now, so all' well, right?)

Anyway, I have a question that is potentially really stupid. I'm perusing the Howl website (www.porchdogsoftware.com) and I can't find anything for Windoze on that site. I had to do some URL hacking to get to the installation instructions for Windoze, but there's no link to the installer anywhere on the site that I can find! Am I really dull lately or has the Windoze version been pulled or did they forget something or... what's going on? Anyone know where I can get ahold of the Windoze installer for Howl? I'd like to see how well the different versions play with eachother but it's a bit challenging under these circumstances.

----------

## drawsmcgraw

Yeah, stupid question. I got a (very) nice response from Howl saying they don't have the installer anymore on account of Bonjour for Windoze. Building Howl from source is still an option, but I'm going to see how Bonjour for Windoze is. He's also working on v.2 of Howl, which will use the Apple API's, for those who are interested.

----------

## ikke

grep is a wonderful tool  :Wink: 

As for that v2 thing: as I wrote before, the Apple API is blocking too, which can be really big trouble for the developer.

----------

## ikke

So, avahi 0.1 has been released and is fairly feature-complete. Now start porting those apps away from Howl  :Smile: 

Reference: http://bur.st/~lathiat/avahi/announcement-0.1 (yeah I'm in it  :Cool: )

----------

## drawsmcgraw

Cool! I'll have to start playing with that now.

----------

