|
Lines 158-164
Link Here
|
| 158 |
int len = sizeof(struct sockaddr_in); |
158 |
int len = sizeof(struct sockaddr_in); |
| 159 |
register struct pmaplist *pml; |
159 |
register struct pmaplist *pml; |
| 160 |
|
160 |
|
| 161 |
while ((c = getopt(argc, argv, "dv")) != EOF) { |
161 |
while ((c = getopt(argc, argv, "dvl")) != EOF) { |
| 162 |
switch (c) { |
162 |
switch (c) { |
| 163 |
|
163 |
|
| 164 |
case 'd': |
164 |
case 'd': |
|
Lines 169-178
Link Here
|
| 169 |
verboselog = 1; |
169 |
verboselog = 1; |
| 170 |
break; |
170 |
break; |
| 171 |
|
171 |
|
|
|
172 |
case 'l': |
| 173 |
listenonlyloopback = 1; |
| 174 |
break; |
| 175 |
|
| 172 |
default: |
176 |
default: |
| 173 |
(void) fprintf(stderr, "usage: %s [-dv]\n", argv[0]); |
177 |
(void) fprintf(stderr, "usage: %s [-dv]\n", argv[0]); |
| 174 |
(void) fprintf(stderr, "-d: debugging mode\n"); |
178 |
(void) fprintf(stderr, "-d: debugging mode\n"); |
| 175 |
(void) fprintf(stderr, "-v: verbose logging\n"); |
179 |
(void) fprintf(stderr, "-v: verbose logging\n"); |
|
|
180 |
(void) fprintf(stderr, "-l: listen only on loopback address (not on external address)\n"); |
| 176 |
exit(1); |
181 |
exit(1); |
| 177 |
} |
182 |
} |
| 178 |
} |
183 |
} |
|
Lines 201-206
Link Here
|
| 201 |
addr.sin_addr.s_addr = 0; |
206 |
addr.sin_addr.s_addr = 0; |
| 202 |
addr.sin_family = AF_INET; |
207 |
addr.sin_family = AF_INET; |
| 203 |
addr.sin_port = htons(PMAPPORT); |
208 |
addr.sin_port = htons(PMAPPORT); |
|
|
209 |
|
| 210 |
if (listenonlyloopback) { |
| 211 |
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); |
| 212 |
} |
| 213 |
|
| 204 |
if (bind(sock, (struct sockaddr *)&addr, len) != 0) { |
214 |
if (bind(sock, (struct sockaddr *)&addr, len) != 0) { |
| 205 |
syslog(LOG_ERR, "cannot bind udp: %m"); |
215 |
syslog(LOG_ERR, "cannot bind udp: %m"); |
| 206 |
exit(1); |
216 |
exit(1); |