Once we open a socket, we probably want to send and receive data across it.Here is the system call we need to make in order to send data as I wrote about in my last post:
c = sendto(sd, buf, sizeof(buf), 0, (struct sockaddr *)&addr, sizeof(addr));
While the existing documentation is good, there are a couple things that have changed since it was originally written, and I had to make a couple minor adjustments to get it to work. Here’s the code to send a message. The receive part should work as originally published; what is important is the set of headers. I built and ran this on an AARCH64 platform running Fedora 38.Continue reading
While the Python socket API is mature, it does not yet support MCTP. I thought I would thus try to make a call from python into native code. The first step is to create a socket. Here is my code to do that.
Note that this is not the entire C code needed to make network call, just the very first step.I did include the code to read errno if the call fails.
#!/usr/bin/python3 from ctypes import * libc = CDLL("/lib64/libc.so.6") AF_MCTP = 45 SOCK_DGRAM = 2 rc = libc.socket (AF_MCTP, SOCK_DGRAM, 0) #print("rc = %d " % rc) get_errno_loc = libc.__errno_location get_errno_loc.restype = POINTER(c_int) errno = get_errno_loc() print("rc = %d errno = %d" % (rc, errno) ) print("OK")
Running this code on my machine shows success
# ./spdm.py rc = 3 errno = 0 OK
There is a pretty common pattern in C coding that uses a Key, often an integer, to select a function to call. However, code may not start there, and there is a pretty common set of interim steps you might go to get there.
The growth is often like this:Continue reading
The future Ampere System-on-a-chip that is the basis for my work has a couple of processors that are for providing system wide services, not for end users to run things on directly. One of these is called the Management Processor, or Mpro. We have to talk to one of these services from the operating system using the Management Control Transport Protocol, or MCTP, over a Platform Communication Channel (PCC).
I just sent ran a user-land program that sends a message via a socket into the operating system, via PCC, to the MPro, and got a response back.
It took a while for it to sink in. And then I raised my hands in the air and proclaimed in my Best Dr. Frankenstein voice,
If you don’t want someone to be able to delete the database, do not give them authority to delete the database.Continue reading
One of my current engineering efforts is in support of the concept of hardware attestation. What is that? Here’s my attempt at a summary:Continue reading
This post is a novelty post merely to say hello to a friend of mine that gave me a shout out else-where.
We have a few different ways we build a Kernel for internal consumption. One is very minimal, to be used when space is at a premium. Another is very closely based on the Fedora configuration to be used as a replacement Kernel for a Fedora install. While we do provide our team with RPMs to install, development often requires building from source. I’ve done this (and forgotten steps) enough times to want to have a quick reference. The following should work on a recent Fedora install.Continue reading