<p>I'm trying to compile a program called ngrep, and when I ran configure, things seemed to go well, but when I run make, I get:</p>

<pre><code>ngrep.c: In function ‘process’:
ngrep.c:544: error: ‘struct udphdr’ has no member named ‘source’
ngrep.c:545: error: ‘struct udphdr’ has no member named ‘dest’
make: *** [ngrep.o] Error 1                              
</code></pre>

<p>What does that mean, and how do I fix it? There are no earlier warnings or errors that suggest the root of the problem.</p>

Well, there is a struct called udphdr (probably short for udp header). And some part of the program assumes the struct has the members source and dest which it hasn't.
Look at file ngrep.c line 544 and 545 to find the offending lines.
Possible causes:
type name type error.
struct is not completely defined.
using the wrong struct.
Edit: probably related problem:
http://ubuntuforums.org/showthread.php?t=371871