Disparity between /etc/services and /var/db/services.db
Garrett Cooper
yaneurabeya at gmail.com
Tue Dec 2 16:13:23 UTC 2014
On Dec 1, 2014, at 11:28, Benjamin Kaduk <kaduk at MIT.EDU> wrote:
> On Mon, 1 Dec 2014, Garrett Cooper wrote:
>
>> $ ls -l /scratch/2/etc/services /scratch/2/var/db/services.db
>> -rw-r--r-- 1 ngie wheel 86802 Nov 27 02:23 /scratch/2/etc/services
>> -rw-r--r-- 1 ngie wheel 2097920 Nov 27 02:23 /scratch/2/var/db/services.db
>
> One's a text file and the other a Berkeley DB file ... I wouldn't expect
> them to be the same size.
Shoot. I didn’t mean for this message to get sent out without a lot of context. For that I apologize...
Basically what I was going to comment on was the fact that the .db file was so large, and by adjusting the number of entries I was able to reduce the size of the file by 4 (it’s bloated by a couple thousand):
From usr.sbin/services_mkdb/services_mkdb.c:
70 HASHINFO hinfo = {
71 .bsize = 256,
72 .ffactor = 4,
73 .nelem = 32768,
74 .cachesize = 1024,
75 .hash = NULL,
76 .lorder = 0
77 };
There are a lot less items in the /etc/services file than 32k:
$ cat count_servents.c
#include <netdb.h>
#include <stdio.h>
int
main(void)
{
int i;
for (i = 0; getservent() != NULL; i++) ;
printf("Number of entries: %d\n", i);
return 0;
}
$ ~/count_servents
Number of entries: 2358
$
In the upstream [IANA] /etc/services file, there’s only 1k more or so.
I would understand if the database was trying to fill the service number range, but 32k != INT_MAX:
struct servent {
char *s_name; /* official name of service */
char **s_aliases; /* alias list */
int s_port; /* port service resides at */
char *s_proto; /* protocol to use */
};
Is there a reason why this? “Upstream” (NetBSD) doesn’t seem to comment much on this either…
Thanks!
PS I just found this thread by bapt from last year that comments about this issue from a different bend: https://lists.freebsd.org/pipermail/freebsd-hackers/2013-October/043661.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20141202/f03cd991/attachment.sig>
More information about the freebsd-arch
mailing list