TCP/IP Networking

M

Mike Warren

Hi,

Can someone please tell me what minimum config is required
to add very basic TCP/IP networking?

All I want to do is set a fixed IP address using netsh and run my own
TCP server. Adding "Basic TCP/IP Networking" wants to bring in so
much junk. I don't want any standard networking services.

Do the experts here often have dozens of unresolved dependencies
when aiming for a small footprint?

On a related subject: I would prefer to use DHCP client but there is
always a very long delay during boot before my shell starts if an address
can't be assigned. On XPPro, the Explorer shell starts and presents a
working interface to the user while the DHCP stuff goes on in the
background. Does anyone know why this doesn't work with custom
shells?

-Mike
 
A

Adora Belle Dearheart

Mike said:
Hi,

Can someone please tell me what minimum config is required
to add very basic TCP/IP networking?

All I want to do is set a fixed IP address using netsh and run my own
TCP server. Adding "Basic TCP/IP Networking" wants to bring in so
much junk. I don't want any standard networking services.

Do the experts here often have dozens of unresolved dependencies
when aiming for a small footprint?

Yes. The best way I found of doing this was to build an image with the
resolved dependencies which does what I wanted, pull some stuff I
thought it unlikely was essential out, a few components at a time, and
tried everything I needed to do.
Once I was sure I was down to as little as possible in my image, I'd
start again from scratch, with a cut-down PMQ that only includes the
devices I actually use, and added back in the components I knew the
image would not work without. This sometimes results in a smaller image
as the invisible components brought in when the dependencies were
resolved are not present - however this can mean the image no longer
works as expected... so, it's all a bit suck-it-and-see once you're
leaving things unresolved.
 
A

AlexC

Yes. The best way I found of doing this was to build an image with the
resolved dependencies which does what I wanted, pull some stuff I
thought it unlikely was essential out, a few components at a time, and
tried everything I needed to do.
Once I was sure I was down to as little as possible in my image, I'd
start again from scratch, with a cut-down PMQ that only includes the
devices I actually use, and added back in the components I knew the
image would not work without. This sometimes results in a smaller image
as the invisible components brought in when the dependencies were
resolved are not present - however this can mean the image no longer
works as expected... so, it's all a bit suck-it-and-see once you're
leaving things unresolved.

Sorry to butt in on this topic, but here I go anyway.

The tools are truly dreadful and so below standard it's unbelievable
when it comes this type of essential prototyping during optimising an
imnage.

Not to disparage what MS has achieved in componentising a complex OS
but I would be ashamed being a mega billion $$$ company and shipping
this s/w...

e.g.
-no versioning built in to allow e.g. fall back
-no comparision tools built it
-The s/w can't even remember to save the new image to the same place,
it takes the previous setting (when switching between projects).
-when some component gets put in, it's difficult to see what caused it
(you have to grope the logs)
-in order to take out a component you really think doesn't belong,
there is no way to detect what component dependency is going to put
it right back in come the next dependency check.

It's easy to create a 200 MB image which has decent functionlaity
(I'm being subjective here). It's mind bogglingly stupefyingly dull
to get it to 100MB where it can & should be.
 
A

Adora Belle Dearheart

AlexC said:
Sorry to butt in on this topic, but here I go anyway.

The tools are truly dreadful and so below standard it's unbelievable
when it comes this type of essential prototyping during optimising an
imnage.

Not to disparage what MS has achieved in componentising a complex OS
but I would be ashamed being a mega billion $$$ company and shipping
this s/w...

e.g.
-no versioning built in to allow e.g. fall back
-no comparision tools built it
-The s/w can't even remember to save the new image to the same place,
it takes the previous setting (when switching between projects).
-when some component gets put in, it's difficult to see what caused it
(you have to grope the logs)
-in order to take out a component you really think doesn't belong,
there is no way to detect what component dependency is going to put
it right back in come the next dependency check.

It's easy to create a 200 MB image which has decent functionlaity
(I'm being subjective here). It's mind bogglingly stupefyingly dull
to get it to 100MB where it can & should be.
It's certainly one of those things that really *should* be easier... but
then, if it were, I'd probably not have a job...
 
M

Mike Warren

Adora said:

Thanks Heidi. Just going through some frustration at the moment
because there are so many components that I don't know the exact
purpose of. This is very time consuming. :-(
Once I was sure I was down to as little as possible in my image, I'd
start again from scratch, with a cut-down PMQ that only includes the
devices I actually use, and added back in the components I knew the
image would not work without.

I'm trying to build an image that will boot on two different sets of
hardware
and allow manual driver installation afterwards. I can do it with an image
size of just over 200MB but want to make it as small as possible.

-Mike
 
K

KM

Mike,
Can someone please tell me what minimum config is required
to add very basic TCP/IP networking?
All I want to do is set a fixed IP address using netsh and run my own
TCP server. Adding "Basic TCP/IP Networking" wants to bring in so
much junk. I don't want any standard networking services.


For very basic IP network support you don't need much. TDI and Ndis drivers, your NIC drivers and nettcpip.inf (with all its
dependencies if any). Perphaps, IPSec and FBA: SCE secure components if you are running on SP2.

You may want to start with "TCP/IP Networking" macro. Howver some user mode Dlls there are up to your discretion. E.g., I don't know
if you need ip helper API, winsock or netbios over tcp/ip, etc.

Then, of course, you'd need NetShell and realted stuff and this may bring many more components.

Certainly this is all true assuming you've got your small footprint basics working (kernel, setupapi, ntdll in place, etc.).

Also, the number of components need to be included would grow if you were to support MS networks (MS network client).
Do the experts here often have dozens of unresolved dependencies
when aiming for a small footprint?

Yes, pretty much always :-(
But that's not a problem of XPe itself (althrough, with binary only access it is definitely worse there) but rather any embedded OS.
On a related subject: I would prefer to use DHCP client but there is
always a very long delay during boot before my shell starts if an address
can't be assigned. On XPPro, the Explorer shell starts and presents a
working interface to the user while the DHCP stuff goes on in the
background. Does anyone know why this doesn't work with custom
shells?

Have you thought of using DHCP API directly from your custom shell?
http://msdn.microsoft.com/library/en-us/dhcp/dhcp/dhcp_client_api.asp

Sample code: http://msdn.microsoft.com/library/d.../en-us/dhcp/dhcp/dhcp_client_api_examples.asp
 
M

Mike Warren

Hi Konstantin,

Thanks for the detailed reply.
You may want to start with "TCP/IP Networking" macro.

Just for fun I started a new project, added TCP/IP Networking
and did an auto-resolve.

Nearly 200 components. :) A lot of things I don't understand.
Why do things like "DirectX Registry Info" and "VGA Boot Driver"
need to be added for TCP/IP? (It's ok, I already know the answer
to that one. :) )
Have you thought of using DHCP API directly from your custom shell?
http://msdn.microsoft.com/library/en-us/dhcp/dhcp/dhcp_client_api.asp

I didn't even know it existed. Looks promising. I'll do some reading.

-Mike
 
K

KM

Mike,
Just for fun I started a new project, added TCP/IP Networking
and did an auto-resolve.

Nearly 200 components. :) A lot of things I don't understand.
Why do things like "DirectX Registry Info" and "VGA Boot Driver"
need to be added for TCP/IP? (It's ok, I already know the answer
to that one. :) )


Well.. That is a pay-off for XP Pro being developed without a thought for embedded :-(

However, some dynamic code paths may not be used on your image so you can try disabling those components (beter just removing the
binaries) and see if the image is still working and meeting your requirements.

Btw, this is why I mentioned components you really need for basic TCP/IP only. But again, when you're going to want to include more
features (MS network support, DHCP, etc.) the image will grow fast :-(
 
A

AlexC

AlexC wrote:
It's certainly one of those things that really *should* be easier... but
then, if it were, I'd probably not have a job...


:)

I think I will put this rant in a separate thread to see
if we can get some comment and attention to the deficiencies...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top