9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] Failed 'reject' function?
@ 2014-10-10  7:48 Pavel Klinkovský
  2014-10-10  9:22 ` Charles Forsyth
  2014-10-10  9:24 ` Sergey Zhilkin
  0 siblings, 2 replies; 6+ messages in thread
From: Pavel Klinkovský @ 2014-10-10  7:48 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

[-- Attachment #1: Type: text/plain, Size: 2579 bytes --]

Hi all,

I tried very simple program on native Plan9:

#include <u.h>
#include <libc.h>

void
main(int, char**)
{
int afd, lfd;
char adir[NETPATHLEN], ldir[NETPATHLEN];

afd = announce("tcp!*!20540", adir);
if (afd < 0)
sysfatal("listen: %r");

lfd = listen(adir, ldir);
if (lfd < 0)
sysfatal("listen: %r");

if (reject(lfd, ldir, "unauthorized") < 0)
sysfatal("reject: %r");

close(lfd);
close(afd);
exits(nil);
}

I dicovered that the funtion 'reject' fails:
term% 8.out
reject: unknown control request

In 'ratrace' listing I can really see the 'reject' function failure:
348 8.out Open 33a7 0xdfffe9bc/"/net/cs" 0x2 = 3 "" 1412926762174586973
1412926762174841785
348 8.out Pwrite 5577 3  0x7880/"tcp!*!20540" 11 -1 = 11 ""
1412926762186976342 1412926762187086984
348 8.out Seek 3391 0x7ab8 3 0x0 0 = 0 "" 1412926762198637769
1412926762198646989
348 8.out Pread 557f 3 0xdfffe9bc 255 -1 0xdfffe9bc/"/net/tcp/clone.20540"
255 -1 = 20 "" 1412926762200546351 1412926762200619275
348 8.out Close 1225 3 = 0 "" 1412926762221784602 1412926762221865069
348 8.out Open 33a7 0xdfffebe0/"/net/tcp/clone" 0x2 = 3 ""
1412926762223717492 1412926762223849089
348 8.out Pread 557f 3 0xdfffede9 246 -1 0xdfffede9/"4" 246 -1 = 1 ""
1412926762235853725 1412926762235866298
348 8.out Pwrite 5577 3  0xdfffece0/"announce.20540" 14 -1 = 14 ""
1412926762247454802 1412926762247479948
348 8.out Open 33a7 0xdfffede0/"/net/tcp/4/listen" 0x2 = 4 ""
1412926762259028218 1412926771821372908
348 8.out Pread 557f 4 0xdfffede9 246 -1 0xdfffede9/"6" 246 -1 = 1 ""
1412926771844967723 1412926771844984487
348 8.out Pwrite 5577 4  0xdfffedec/"reject.6.unauthorized" 21 -1 = -1
unknown control request 1412926771854330421 1412926771854347185
348 8.out Errstr 5587 0xdfffe914 128"" 128 = 0  1412926771871626615
1412926771871632483
348 8.out Errstr 5587 0xdfffe914 128"" 128 = 0 unknown control request
1412926771887234674 1412926771887239703
348 8.out Pwrite 5577 2  0xdfffe980/"reject:.unknown.control.request." 32
-1reject: unknown control request
 = 32 "" 1412926771918100040 1412926771932457957
348 8.out Open 33a7 0x7538/"#c/pid" 0x0 = 5 "" 1412926771947976329
1412926771948085295
348 8.out Pread 557f 5 0xdfffeaa0 20 -1 0xdfffeaa0/"........348." 20 -1 =
12 "" 1412926771963591547 1412926771963607473
348 8.out Close 1225 5 = 0 "" 1412926771979115786 1412926771979128359
348 8.out Exits 122d 0xdfffeadc/"reject: unknown control request"

Do you have any explanation?
Did I make some bug in the program?

Thanks in advance.

Pavel

[-- Attachment #2: Type: text/html, Size: 4209 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [9fans] Failed 'reject' function?
  2014-10-10  7:48 [9fans] Failed 'reject' function? Pavel Klinkovský
@ 2014-10-10  9:22 ` Charles Forsyth
  2014-10-10  9:23   ` Charles Forsyth
  2014-10-10  9:24 ` Sergey Zhilkin
  1 sibling, 1 reply; 6+ messages in thread
From: Charles Forsyth @ 2014-10-10  9:22 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

[-- Attachment #1: Type: text/plain, Size: 317 bytes --]

On 10 October 2014 08:48, Pavel Klinkovský <pavel.klinkovsky@gmail.com>
wrote:

> Do you have any explanation?
> Did I make some bug in the program?
>

Not all network types implement "reject", and the result of reject is
therefore usually ignored (since in any case the connection is going to be
closed).

[-- Attachment #2: Type: text/html, Size: 632 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [9fans] Failed 'reject' function?
  2014-10-10  9:22 ` Charles Forsyth
@ 2014-10-10  9:23   ` Charles Forsyth
  0 siblings, 0 replies; 6+ messages in thread
From: Charles Forsyth @ 2014-10-10  9:23 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

[-- Attachment #1: Type: text/plain, Size: 260 bytes --]

On 10 October 2014 10:22, Charles Forsyth <charles.forsyth@gmail.com> wrote:

> Not all network types implement "reject",


To be more precise: not all network types allow a diagnostic to be sent
with the reset or close and sadly TCP/IP is one of them.

[-- Attachment #2: Type: text/html, Size: 559 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [9fans] Failed 'reject' function?
  2014-10-10  7:48 [9fans] Failed 'reject' function? Pavel Klinkovský
  2014-10-10  9:22 ` Charles Forsyth
@ 2014-10-10  9:24 ` Sergey Zhilkin
  2014-10-10  9:28   ` Pavel Klinkovský
  1 sibling, 1 reply; 6+ messages in thread
From: Sergey Zhilkin @ 2014-10-10  9:24 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

[-- Attachment #1: Type: text/plain, Size: 3045 bytes --]

Hi Pavel !

It seems, you do it incorrectly :) dial(2) has an exact example if using
announce/listen/accept functions.

2014-10-10 11:48 GMT+04:00 Pavel Klinkovský <pavel.klinkovsky@gmail.com>:

> Hi all,
>
> I tried very simple program on native Plan9:
>
> #include <u.h>
> #include <libc.h>
>
> void
> main(int, char**)
> {
> int afd, lfd;
> char adir[NETPATHLEN], ldir[NETPATHLEN];
>
> afd = announce("tcp!*!20540", adir);
> if (afd < 0)
> sysfatal("listen: %r");
>
> lfd = listen(adir, ldir);
> if (lfd < 0)
> sysfatal("listen: %r");
>
> if (reject(lfd, ldir, "unauthorized") < 0)
> sysfatal("reject: %r");
>
> close(lfd);
> close(afd);
> exits(nil);
> }
>
> I dicovered that the funtion 'reject' fails:
> term% 8.out
> reject: unknown control request
>
> In 'ratrace' listing I can really see the 'reject' function failure:
> 348 8.out Open 33a7 0xdfffe9bc/"/net/cs" 0x2 = 3 "" 1412926762174586973
> 1412926762174841785
> 348 8.out Pwrite 5577 3  0x7880/"tcp!*!20540" 11 -1 = 11 ""
> 1412926762186976342 1412926762187086984
> 348 8.out Seek 3391 0x7ab8 3 0x0 0 = 0 "" 1412926762198637769
> 1412926762198646989
> 348 8.out Pread 557f 3 0xdfffe9bc 255 -1 0xdfffe9bc/"/net/tcp/clone.20540"
> 255 -1 = 20 "" 1412926762200546351 1412926762200619275
> 348 8.out Close 1225 3 = 0 "" 1412926762221784602 1412926762221865069
> 348 8.out Open 33a7 0xdfffebe0/"/net/tcp/clone" 0x2 = 3 ""
> 1412926762223717492 1412926762223849089
> 348 8.out Pread 557f 3 0xdfffede9 246 -1 0xdfffede9/"4" 246 -1 = 1 ""
> 1412926762235853725 1412926762235866298
> 348 8.out Pwrite 5577 3  0xdfffece0/"announce.20540" 14 -1 = 14 ""
> 1412926762247454802 1412926762247479948
> 348 8.out Open 33a7 0xdfffede0/"/net/tcp/4/listen" 0x2 = 4 ""
> 1412926762259028218 1412926771821372908
> 348 8.out Pread 557f 4 0xdfffede9 246 -1 0xdfffede9/"6" 246 -1 = 1 ""
> 1412926771844967723 1412926771844984487
> 348 8.out Pwrite 5577 4  0xdfffedec/"reject.6.unauthorized" 21 -1 = -1
> unknown control request 1412926771854330421 1412926771854347185
> 348 8.out Errstr 5587 0xdfffe914 128"" 128 = 0  1412926771871626615
> 1412926771871632483
> 348 8.out Errstr 5587 0xdfffe914 128"" 128 = 0 unknown control request
> 1412926771887234674 1412926771887239703
> 348 8.out Pwrite 5577 2  0xdfffe980/"reject:.unknown.control.request." 32
> -1reject: unknown control request
>  = 32 "" 1412926771918100040 1412926771932457957
> 348 8.out Open 33a7 0x7538/"#c/pid" 0x0 = 5 "" 1412926771947976329
> 1412926771948085295
> 348 8.out Pread 557f 5 0xdfffeaa0 20 -1 0xdfffeaa0/"........348." 20 -1 =
> 12 "" 1412926771963591547 1412926771963607473
> 348 8.out Close 1225 5 = 0 "" 1412926771979115786 1412926771979128359
> 348 8.out Exits 122d 0xdfffeadc/"reject: unknown control request"
>
> Do you have any explanation?
> Did I make some bug in the program?
>
> Thanks in advance.
>
> Pavel
>
>


-- 
С наилучшими пожеланиями
Жилкин Сергей
With best regards
Zhilkin Sergey

[-- Attachment #2: Type: text/html, Size: 4893 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [9fans] Failed 'reject' function?
  2014-10-10  9:24 ` Sergey Zhilkin
@ 2014-10-10  9:28   ` Pavel Klinkovský
  2014-10-10  9:32     ` Charles Forsyth
  0 siblings, 1 reply; 6+ messages in thread
From: Pavel Klinkovský @ 2014-10-10  9:28 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

[-- Attachment #1: Type: text/plain, Size: 386 bytes --]

Hi Sergey,

It seems, you do it incorrectly :) dial(2) has an exact example if using
> announce/listen/accept functions.
>

I do exactly what I need. ;)

The sequence announce/listen/accept is very well known to me.

But I need both possibilities:
- accept incoming connection
- reject incoming connection, which failed.

Thank to Charles, I finally understood.

Pavel

[-- Attachment #2: Type: text/html, Size: 759 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [9fans] Failed 'reject' function?
  2014-10-10  9:28   ` Pavel Klinkovský
@ 2014-10-10  9:32     ` Charles Forsyth
  0 siblings, 0 replies; 6+ messages in thread
From: Charles Forsyth @ 2014-10-10  9:32 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

[-- Attachment #1: Type: text/plain, Size: 364 bytes --]

On 10 October 2014 10:28, Pavel Klinkovský <pavel.klinkovsky@gmail.com>
wrote:

> reject incoming connection, which failed.


reject should probably swallow the error return from the ctl file write, as
accept does, until
tcp/ip and others interpret the control request and either reset the
connection there,
or ignore the request and act on the close.

[-- Attachment #2: Type: text/html, Size: 711 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-10-10  9:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-10  7:48 [9fans] Failed 'reject' function? Pavel Klinkovský
2014-10-10  9:22 ` Charles Forsyth
2014-10-10  9:23   ` Charles Forsyth
2014-10-10  9:24 ` Sergey Zhilkin
2014-10-10  9:28   ` Pavel Klinkovský
2014-10-10  9:32     ` Charles Forsyth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).