Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <ip.h>
4
#include <thread.h>
5
#include "netbios.h"
6
 
7
NbnsMessage *
8
nbnsmessagenamequeryrequestnew(ushort id, int broadcast, NbName name)
9
{
10
	NbnsMessage *s;
11
	NbnsMessageQuestion *q;
12
	s = nbnsmessagenew();
13
	if (s == nil)
14
		return nil;
15
	s->id = id;
16
	s->opcode = NbnsOpQuery;
17
	s->broadcast = broadcast;
18
	s->recursiondesired = 1;
19
	q =  nbnsmessagequestionnew(name, NbnsQuestionTypeNb, NbnsQuestionClassIn);
20
	if (q == nil) {
21
		nbnsmessagefree(&s);
22
		return nil;
23
	}
24
	nbnsmessageaddquestion(s, q);
25
	return s;
26
}
27
 
28
NbnsMessage *
29
nbnsmessagenameregistrationrequestnew(ushort id, int broadcast, NbName name, ulong ttl, uchar *ipaddr)
30
{
31
	NbnsMessage *s;
32
	NbnsMessageQuestion *q;
33
	uchar rdata[6];
34
	NbnsMessageResource *r;
35
 
36
	s = nbnsmessagenew();
37
	if (s == nil)
38
		return nil;
39
	s->id = id;
40
	s->opcode = NbnsOpRegistration;
41
	s->broadcast = broadcast;
42
	s->recursiondesired = 1;
43
	q =  nbnsmessagequestionnew(name, NbnsQuestionTypeNb, NbnsQuestionClassIn);
44
	if (q == nil) {
45
		nbnsmessagefree(&s);
46
		return nil;
47
	}
48
	nbnsmessageaddquestion(s, q);
49
	rdata[0] = 0;
50
	rdata[1] = 0;
51
	v6tov4(rdata + 2, ipaddr);
52
	r = nbnsmessageresourcenew(name, NbnsResourceTypeNb, NbnsResourceClassIn, ttl, 6, rdata);
53
	nbnsmessageaddresource(&s->ar, r);
54
	return s;
55
}